Requisição API REST com método PATCH
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
Curtidas 0
Respostas
Natanael Ferreira
16/08/2022
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;
GOSTEI 0