Fórum Requisição API REST com método PATCH #618568
16/08/2022
0
Boa tarde,
Estou tentando implementar a baixa de boletos via a API SICOOB e na documentação informa que o método a ser usado é do tipo PATCH.
https://developers.sicoob.com.br/#!/apis
Verificando o componente RESTRequest estão disponíveis somentes os métodos DELETE, GET, POST E PUT.
Tentei fazer a requisição como POST ou PUT mas sem sucesso.
Alguém sabe como fazer a requisição usando este método PATCH?
Estou tentando implementar a baixa de boletos via a API SICOOB e na documentação informa que o método a ser usado é do tipo PATCH.
https://developers.sicoob.com.br/#!/apis
Verificando o componente RESTRequest estão disponíveis somentes os métodos DELETE, GET, POST E PUT.
Tentei fazer a requisição como POST ou PUT mas sem sucesso.
Alguém sabe como fazer a requisição usando este método PATCH?
Natanael Ferreira
Curtir tópico
+ 0
Responder
Posts
17/08/2022
Natanael Ferreira
Com base no link abaixo, consegui resolver usando o método TIdHTTP.DoRequest():
https://stackoverflow.com/questions/24556265/how-do-i-make-a-http-patch-request-in-delphi
Exemplo:
https://stackoverflow.com/questions/24556265/how-do-i-make-a-http-patch-request-in-delphi
Exemplo:
type TIdHTTPAccess = class(TIdHTTP);
var
URLs: string;
lHTTP: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
AccessToken: string;
JsonToSend: TStringStream;
JsonRetorno: TMemoryStream;
begin
URLs := 'https://sandbox.sicoob.com.br/cobranca-bancaria/v1/boletos/baixa';
with lHTTP do
begin
lHTTP := TIdHTTP.Create(nil);
IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
try
IOHandler := IdSSLIOHandlerSocketOpenSSL;
Request.UserAgent := 'insomnia/2022.3.0';
HandleRedirects := True;
Request.CustomHeaders.Clear;
Request.CustomHeaders.AddValue('Content-type', 'application/json');
Request.CustomHeaders.AddValue('client_id', 'P1tC66e78hb2NN9CohJXoLMoV44a');
Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + AccessToken);
Request.CharSet := 'utf-8';
Request.Host := URLs;
JsonToSend := TStringStream.Create(memBaixa.Text, TEncoding.UTF8);
JsonRetorno := TMemoryStream.Create;
try
TIdHTTPAccess(lHTTP).DoRequest('PATCH', URLs, JsonToSend, JsonRetorno, []);
JsonRetorno.Position := 0;
Json := ReadStringAsCharset(JsonRetorno, TIdHTTPAccess(lHTTP).ResponseCharset{$IFDEF STRING_IS_ANSI},
ADestEncoding{$ENDIF});
finally
JsonRetorno.Free;
JsonToSend.Free;
end;
if ResponseCode = 207 then
Application.MessageBox('Baixa efetuada com sucesso.', 'Informação', MB_OK + MB_ICONINFORMATION)
else
Application.MessageBox('Falha ao baixar boleto', 'Aviso', MB_OK + MB_ICONWARNING);
except
on E: Exception do
Application.MessageBox(PChar(Concat('Falha ao baixar boleto.', sLineBreak, sLineBreak,
ResponseCode.ToString(), ' - ', E.Message)), 'Aviso', MB_OK + MB_ICONWARNING)
end;
finally
lHTTP.Free;
IdSSLIOHandlerSocketOpenSSL.Free;
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)