Silvio Vale Postado 23 Outubro Postado 23 Outubro Bom dia! Sou iniciante no projeto ACBr e estou utilizando o componente TAcbrHTTp para consumir uma API conforme exemplo abaixo. Gostaria de saber como faço para verificar o conteúdo da requisição cURL para que eu possa conferir os respectivos dados enviados. Procurei no fórum e não encontrei algo semelhante. var httpSend : TAcbrHTTp; stmParametros: TStringStream; jsonObjClient: TJSONObject; vrURL, vrRetorno: String; begin jsonObjClient := TJSONObject.Create; jsonObjClient.AddPair('id', '22'); jsonObjClient.AddPair('formato', 'JSON'); vrURL := 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; httpSend := TACBrHTTP.Create(nil); try stmParametros := TStringStream.Create(jsonObjClient.ToString); try try httpSend.HTTPSend.Clear; httpSend.HTTPSend.MimeType := 'application/json'; httpSend.HTTPSend.Headers.Add('authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); httpSend.HTTPSend.Headers.Add('Accept-Charset: utf-8'); httpSend.HTTPSend.Document.LoadFromStream(stmParametros); httpSend.HTTPPost(vrURL); except on E: Exception do begin Application.ProcessMessages; ShowMessage(E.Message); end; end; vrRetorno := Trim(httpSend.RespHTTP.Text); finally FreeAndNil(httpSend); end; finally FreeAndNil(httpSend); end; end;
Moderadores Juliomar Marchetti Postado 23 Outubro Moderadores Postado 23 Outubro Não tem. tu pode pegar e tentar escrever algo dentro do código para pegar. lembrando que tu vai ter que alterar o synapse pois é ele quem roda por baixo dos panos Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Silvio Vale Postado 23 Outubro Autor Postado 23 Outubro 14 minutos atrás, Juliomar Marchetti disse: Não tem. tu pode pegar e tentar escrever algo dentro do código para pegar. lembrando que tu vai ter que alterar o synapse pois é ele quem roda por baixo dos panos Entendi.. Obrigado!!
Moderadores Juliomar Marchetti Postado 23 Outubro Moderadores Postado 23 Outubro Mas qual seria o objetivo? com o componente tu consegue pegar e tratar possíveis erros no consumo é alguma API não publica? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Moderadores Arimateia Jr Postado 23 Outubro Moderadores Postado 23 Outubro Bom dia, @Silvio Vale. Pelo que entendi, você deseja verificar o conteúdo que está sendo enviado na requisição HTTP, é isso? Nesse caso, como você está utilizando um objeto JSON (jsonObjClient), pode simplesmente conferir o resultado de jsonObjClient.ToString, que representa o corpo da requisição em formato JSON. Exemplo: ShowMessage(jsonObjClient.ToString); Isso exibirá o JSON no formato que será enviado na requisição, permitindo que você confira os dados.
Moderadores Juliomar Marchetti Postado 23 Outubro Moderadores Postado 23 Outubro Acho que ele quer o comando cURL completo Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Silvio Vale Postado 23 Outubro Autor Postado 23 Outubro 46 minutos atrás, Juliomar Marchetti disse: Mas qual seria o objetivo? com o componente tu consegue pegar e tratar possíveis erros no consumo é alguma API não publica? Não. A API é publica sim. O problema é que não estamos conseguindo identificar um determinado erro e a empresa que desenvolveu a API nos solicitou o curl --location para nos ajudar a identificá-lo. 2 minutos atrás, Silvio Vale disse: Não. A API é publica sim. O problema é que não estamos conseguindo identificar um determinado erro e a empresa que desenvolveu a API nos solicitou o curl --location para nos ajudar a identificá-lo. Arimateia, Realmente eles estão solicitando cURL completo.
Moderadores Juliomar Marchetti Postado 23 Outubro Moderadores Postado 23 Outubro Bingo. passa a API e vamos ver se entendemos o que tá pegando? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Moderadores Arimateia Jr Postado 23 Outubro Moderadores Postado 23 Outubro @Silvio Vale Seria isso que você quer?
Silvio Vale Postado 23 Outubro Autor Postado 23 Outubro 3 horas atrás, Juliomar Marchetti disse: Bingo. passa a API e vamos ver se entendemos o que tá pegando? API https://api.tiny.com.br/api2/pedido.obter.php Documentação https://tiny.com.br/api-docs/api2-pedidos-obter Serviço Obter Pedido No exemplo que enviei acima não consta o dado toke, porém o mesmo consta em nossa aplicação jsonObjClient := TJSONObject.Create; jsonObjClient.AddPair('token', 'XXXXXXXXXX'); jsonObjClient.AddPair('id', '22'); jsonObjClient.AddPair('formato', 'JSON'); Vou verificar com o suporte se eles disponibilizam um token para ambiente de teste. 2 horas atrás, Arimateia Jr disse: @Silvio Vale Seria isso que você quer? Algo semelhante a isso: curl --location 'https://api.tiny.com.br/api2/pedidos.pesquisa.php?token=700576c1b554d758863e7b399398c7de888566bbd4c5972808338a7bd3940b6a&formato=json' \ --header 'Cookie: __cf_bm=B.Fmxnhyz1N7ShQ21vRvh108f0.PXEK9BAo_aH6xMvc-1729513669-1.0.1.1-KvcHD2DkHzzSkDNnJY9yT2zJsAm9us5gTLv19yKnNk8wjgbLTdPW2eUXDB_xTk8p94sfLIEwH2f1PAoqIKr5mQ'
Moderadores Juliomar Marchetti Postado 23 Outubro Moderadores Postado 23 Outubro Hum mas olhando esse seu token tu não manda tu manda abaixo mas dai é no header somente, mas eles querem pelo que entendi lá também Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Silvio Vale Postado 23 Outubro Autor Postado 23 Outubro 29 minutos atrás, Juliomar Marchetti disse: Hum mas olhando esse seu token tu não manda tu manda abaixo mas dai é no header somente, mas eles querem pelo que entendi lá também Somente não enviei o token no exemplo que postei aqui no fórum, mas na aplicação eu envio sim. Veja... jsonObjClient := TJSONObject.Create; jsonObjClient.AddPair('token', 'XXXXXXXXXX'); jsonObjClient.AddPair('id', '22'); jsonObjClient.AddPair('formato', 'JSON');
Moderadores Arimateia Jr Postado 23 Outubro Moderadores Postado 23 Outubro @Silvio Vale Lendo a documentação, vi que a requisição está sendo feita através do componente TACBrHTTP de forma incorreta. Você está tentando fazer uma requisição POST usando JSON no corpo da requisição, mas a API que você está tentando consumir espera que os parâmetros sejam enviados de uma das seguintes formas: curl -X GET "https://api.tiny.com.br/api2/pedido.obter.php?token=xxxx&formato=JSON&id=22" curl -X POST "https://api.tiny.com.br/api2/pedido.obter.php" \ -H "Content-Type: multipart/form-data" \ -F "token=xxxx" \ -F "formato=JSON" \ -F "id=22" A primeira opção utiliza o método GET com os dados na URL. A segunda opção faz uma requisição POST com os parâmetros enviados via form-data. Refatore o código Delphi que utiliza o TACBrHTTP para refletir uma dessas abordagens.
Silvio Vale Postado 24 Outubro Autor Postado 24 Outubro Em 23/10/2024 at 16:32, Arimateia Jr disse: @Silvio Vale Lendo a documentação, vi que a requisição está sendo feita através do componente TACBrHTTP de forma incorreta. Você está tentando fazer uma requisição POST usando JSON no corpo da requisição, mas a API que você está tentando consumir espera que os parâmetros sejam enviados de uma das seguintes formas: curl -X GET "https://api.tiny.com.br/api2/pedido.obter.php?token=xxxx&formato=JSON&id=22" curl -X POST "https://api.tiny.com.br/api2/pedido.obter.php" \ -H "Content-Type: multipart/form-data" \ -F "token=xxxx" \ -F "formato=JSON" \ -F "id=22" A primeira opção utiliza o método GET com os dados na URL. A segunda opção faz uma requisição POST com os parâmetros enviados via form-data. Refatore o código Delphi que utiliza o TACBrHTTP para refletir uma dessas abordagens. Ok, Vou refazer o código e realizar novo teste. Obrigado!
Moderadores Juliomar Marchetti Postado 24 Outubro Moderadores Postado 24 Outubro 38 minutos atrás, Silvio Vale disse: Ok, Vou refazer o código e realizar novo teste. Obrigado! var LSend : TACBrHTTP; LURL, LRetorno: String; begin LURL := 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; LSend := TACBrHTTP.Create(nil); try try LSend.HTTPSend.Clear; LSend.HTTPSend.MimeType := 'application/json'; LSend.HTTPSend.Headers.Add( 'authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); LSend.HTTPSend.Headers.Add('Accept-Charset: utf-8'); LSend.URLQueryParams.AddPair('id', '22'); LSend.URLQueryParams.AddPair('formato', 'JSON'); LSend.URLQueryParams.AddPair( 'token', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); LSend.HTTPPost(LURL); except on E: Exception do begin Application.ProcessMessages; ShowMessage(E.Message); end; end; LRetorno := Trim(LSend.HTTPResponse); finally FreeAndNil(LSend); end; Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Silvio Vale Postado 28 Outubro Autor Postado 28 Outubro Em 24/10/2024 at 18:15, Juliomar Marchetti disse: var LSend : TACBrHTTP; LURL, LRetorno: String; begin LURL := 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; LSend := TACBrHTTP.Create(nil); try try LSend.HTTPSend.Clear; LSend.HTTPSend.MimeType := 'application/json'; LSend.HTTPSend.Headers.Add( 'authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); LSend.HTTPSend.Headers.Add('Accept-Charset: utf-8'); LSend.URLQueryParams.AddPair('id', '22'); LSend.URLQueryParams.AddPair('formato', 'JSON'); LSend.URLQueryParams.AddPair( 'token', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); LSend.HTTPPost(LURL); except on E: Exception do begin Application.ProcessMessages; ShowMessage(E.Message); end; end; LRetorno := Trim(LSend.HTTPResponse); finally FreeAndNil(LSend); end; Vou testar. Muito obrigado!!
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora