WebService passar autorização
Bom Dia Pessoal,
Como faço para autenticar uma requisição no consumo de uma WebService para envio de arquivo?
Cenário:
Delphi 7 + Indy
Componentes:
TIdHTTP
TIdSSLIOHandlerSocket
Método:
Post
Como faço para autenticar uma requisição no consumo de uma WebService para envio de arquivo?
Cenário:
Delphi 7 + Indy
Componentes:
TIdHTTP
TIdSSLIOHandlerSocket
Método:
Post
Dirceu Morais
Curtidas 0
Respostas
Dirceu Morais
17/09/2016
Esqueci de mencionar:
Quando uso o IdHTTP.Post('/scb/v1.0/bilheterias HTTP/1.1', Arquivo, Response);
me retorna o erro:
Quando uso o IdHTTP.Post('/scb/v1.0/bilheterias HTTP/1.1', Arquivo, Response);
me retorna o erro:
socket error #10061 connection refused
GOSTEI 0
Dirceu Morais
17/09/2016
Boa Tarde,
Consegui passar autorização agora estou tentando obter o retorno do Webservice quando tem erro
Estou tentando enviar um arquivo e não sei como pegar o retorno. Veja meu código.
Bem se não desse erro, eu supostamente, teria o retorno em TRichEdit
reResp.Text := Response.DataString;
ShowMessage(Response.DataString);
Porém existe um erro de exceção e está me retornando o erro 422.
Desde já agradeço
Usei o complemento do goolgle o Postman e consigo ver o que esta de errado, mas no delphi não consigo saber como colocar o retorno para analisar o erro.
Consegui passar autorização agora estou tentando obter o retorno do Webservice quando tem erro
Estou tentando enviar um arquivo e não sei como pegar o retorno. Veja meu código.
Var Response: TStringStream;
XArquivo : TMemoryStream;
begin
Response := TStringStream.Create('');
XArquivo := TMemoryStream.Create;
Try
XArquivo.LoadFromFile('d:\\sistema\\arquivo.xml');
IdHTTP.Request.CustomHeaders.Clear;
IdHTTP.Request.Clear;
IdHTTP.ConnectTimeout := 30000;
idHTTP.OnAuthorization := IdHTTPAuthorization;
IdHTTP.Request.ContentType := 'Application/xml';
IdHTTP.Request.ContentEncoding := 'raw';
IdHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
IdHTTP.Request.CustomHeaders.AddValue('Authorization', 'kkkkcccccjjj99959dijjttllt86m0');
Try
IdHTTP.Post('http://servidor.com.br', XArquivo, Response);
reResp.Text := Response.DataString;
except
on E: Exception do
Begin
IdHTTP.Disconnect;
if pos('400',E.Message) > 0 then
ShowMessage('400 – Requisição ruim: A requisição não pôde ser interpretada pelo servidor em razão de erros de formato/sintaxe.')
Else if pos('401',E.Message) > 0 then
ShowMessage('401 – Não autorizado:'#13#13'A requisição requer autenticação por parte do cliente e as informações de'#13'autenticação não foram localizadas ou não são válidas.')
Else if pos('405',E.Message) > 0 then
ShowMessage('405 – Método não permitido:'#13'O método HTTP utilizado não é permitido para o recurso identificado na URL')
Else if pos('422',E.Message) > 0 then
ShowMessage('422 – Entidade não processável:'#13'O servidor reconhece que as informações estão na sintaxe correta, mas seu conteúdo está semanticamente incorreto.')
Else if pos('11001',E.Message) > 0 then
ShowMessage('11001 – Sem conexão com a Internet')
Else
ShowMessage(e.message);
end;
end;
finally
Response.Free();
Arquivo.Free();
end;
Bem se não desse erro, eu supostamente, teria o retorno em TRichEdit
reResp.Text := Response.DataString;
ShowMessage(Response.DataString);
Porém existe um erro de exceção e está me retornando o erro 422.
Desde já agradeço
Usei o complemento do goolgle o Postman e consigo ver o que esta de errado, mas no delphi não consigo saber como colocar o retorno para analisar o erro.
GOSTEI 0
Dirceu Morais
17/09/2016
Obrigado a todos que empenharam em me ajudar.
Já consegui resolver o meu problema.
ps. Não sei como colocar o tópico como resolvido.
:)
Já consegui resolver o meu problema.
ps. Não sei como colocar o tópico como resolvido.
:)
GOSTEI 0