ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Requisição REST com método PATCH [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Ago 11, 2022 4:38 pm    Assunto: Requisição REST com método PATCH [Resolvido] Responder com Citação

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?
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin


Editado pela última vez por natanbh1 em Qua Ago 17, 2022 5:56 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Ago 17, 2022 5:55 pm    Assunto: Responder com Citação

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:
Código:
type
  TIdHTTPAccess = class(TIdHTTP);

Código:

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', clientID);
        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;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB