Jump to content

d2mpavan

Membros
  • Content Count

    36
  • Joined

  • Last visited

Community Reputation

11 Good

About d2mpavan

  • Rank
    Membro

Profile Information

  • Sexo
    Masculino
  • Localização
    Piracicaba/SP

Recent Profile Visitors

501 profile views
  1. Boa Noite Pessoal! Em minhas últimas postagens eu estava com dificuldades para integrar com uma api e enviar arquivos JSon. Graças à ajuda de nosso amigo "DATILAS" (Douglas Átilas), consegui implementar com sucesso a ferramenta de integração. Porém, praticamente de 98 a 99% das ordens enviadas (arquivos JSon) tem seu envio sem nenhum problema, sendo recebido integralmente pelo web service da api. O restante que minha ferramenta não consegue enviar é que eu não estou conseguindo resolver a questão, porque se eu copio uma dessas ordens que apresentou problema e tento enviar pelo "boomerang" ou pela "Restlet Client" do Google", a mesma é enviado normalmente. Alguém poderia me auxiliar nessa questão, por gentileza? Segue abaixo uma das ordens que apresentam problema em minha ferramenta: [{"Driver":{"PhoneCountry":"+55","PhoneNumber":"19 994559352"},"Customer":{"DocumentType":"CNPJ","DocumentNumber":"11229082000167"},"OrderType":1,"OrderID":"229551","OrderNumber":"229551","Sequence":"3","OrderDescription":"NF-e","OrderDescriptionDocuments":"NF-e","SourceAddress":{"Address":"RUA KINITI MORI, 110","Address2":"COMENDADOR MARIO DEDINI","ZipCode":"13413069","City":"PIRACICABA","State":"SP","Country":"BRASIL","Name":"PIRACICABA CARNES E DERIVADOS EIRELI","Responsibility":"REGINALDO","PhoneCountry":"+55","PhoneNumber":"(19)3917-0260"},"DestinationAddress":{"Address":"AV. RIO DAS PEDRAS, 192","Address2":"PIRACICAMIRIM","ZipCode":"13420520","City":"PIRACICABA","State":"SP","Country":"BRASIL","Name":"BAR PANTERA","Responsibility":"DIJALMA","PhoneCountry":"+55","PhoneNumber":"19 3426 2942"},"Documents":[{"DocumentID":"229551","DocumentNumber":"229551","Volumes":[{"VolumeID":"1","Count":1,"BarCode":"0","Read":1}]}],"Observation":"RAZAO SOCIAL: DJALMA PERES FARIAS ME ","DepartureDate":"2019-10-08T00:00:00"}] Para enviar essa ordem, ela é gerada em um TMemo e depois enviada pelo código abaixo: Link do Manual da API: https://api.tudoentregue.com.br/Documentacao/ Segue rotina para envio... function TFExportaEntrega.EnviarJSon(caminho: String; ArqJSon: TMemo): Boolean; Var code: Integer; sResponse, url: String; JsontoSend, AResponseContent: TStringStream; iStatusCode: Integer; http: TIdHTTP; Handler: TIdSSLIOHandlerSocketOpenSSL; Begin JsontoSend := TStringStream.Create(ArqJSon.Text); AResponseContent := TStringStream.Create(''); http := TIdHTTP.Create(Nil); Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Try http.Request.CharSet := 'utf-8'; http.Request.ContentType := 'application/json'; http.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); http.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); http.IOHandler := Handler; http.Response.ContentType := 'application/json'; http.Response.CharSet := 'utf-8'; url := 'http://api.tudoentregue.com.br/v1' + caminho; Try http.Post(url, JsontoSend, AResponseContent); Except On E:Exception Do Begin Memo_Resp.Lines.Add('Response Content : '); AResponseContent.Position := 0; Memo_Resp.Lines.LoadFromStream(AResponseContent); Memo_Resp.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo_Resp.Lines.Add('Error on Response Text: ' + http.ResponseText); Memo_Resp.Lines.Add('Error on Request: ' + sLineBreak + E.Message); EnviarJSon := false; exit; End; End; EnviarJSon := True; Finally JsontoSend.Free; AResponseContent.Free; http.Free; Handler.Free; End; end; Se alguém puder me ajudar ficarei muito grato pois não sei mais o que fazer. Att. Daniel
  2. Boa Tarde Pessoal! Em minha ultima postagem o Datilas me ajudou demais (Muito Obrigado mesmo)! Consegui enviar os motoristas conforme a orientação dele e está funcionando perfeitamente. Porém, agora preciso enviar as ordens, e deveriam seguir as mesmas regras mudando apenas o caminho (orders). Mas não está enviando e me retorna erro 400 - Bad Request. Segue abaixo o código, caso alguém possa me ajudar. procedure TForm1.Button1Click(Sender: TObject); Var code: Integer; sResponse: String; Json: String; JsontoSend, AResponseContent: TStringStream; iStatusCode: Integer; http: TIdHTTP; Handler: TIdSSLIOHandlerSocketOpenSSL; Begin Json := '{"Driver": {"PhoneCountry": "+55","PhoneNumber": "19999690130"},"Customer": {"DocumentType": "CNPJ","DocumentNumber": "11229082000167"},"OrderType": 1,"OrderID": "123456","OrderNumber": "123456","OrderDescription": "NF-e",'; Json := Json + '"OrderDescriptionDocuments": "NF-e","SourceAddress": {"Address": "Rua Rahal, 71","Address2": "Jardim Santa Mena","ZipCode": "07097020","City": "Guarulhos","State": "Sao Paulo.","Country": "Brasil","Name": "Active Corp"'; Json := Json + ',"Responsibility": "Everton Implantacão","PhoneCountry": "+55", "PhoneNumber": "11988999199"},"DestinationAddress": {"Address": "Rua Sales, 812","Address2": "Cabucu","ZipCode": "07144260","City": "Guarulhos","State": "Sao Paulo","Country": "Brasil"'; Json := Json + ',"Name": "Everton Destinatario","Responsibility": "Everton","PhoneCountry": "+55","PhoneNumber": "1199994-9999"},"Documents": [{"DocumentID": "ID999999","DocumentNumber": "999999999","Volumes": [{"VolumeID": "ID999999","Count": 5,'; Json := Json + '"BarCode": "99999999999999999999","Read": 5}]}],"Observation": "Observação da Ordem para liberação."}'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); http := TIdHTTP.Create(Nil); Handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); // Memo1.Lines.Clear; Try http.Request.CharSet := 'utf-8'; http.Request.ContentType := 'application/json'; http.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); http.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); http.IOHandler := Handler; http.Response.ContentType := 'applicattion/json'; http.Response.CharSet := 'utf-8'; Try http.Post('https://api.tudoentregue.com.br/v1/orders', JsontoSend, AResponseContent); Except On E: Exception Do Begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText); Memo1.Lines.Add('Error on Request: ' + sLineBreak + e.Message); exit; End; End; Memo1.Lines.Clear; Memo1.Lines.Add('Response Content: ' + AResponseContent.DataString); Memo1.Lines.Add('Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Response Text: ' + http.ResponseText); Finally JsontoSend.Free; AResponseContent.Free; http.Free; Handler.Free; End; end; O arquivo JSon está correto porque foi enviado como exemplo pela empresa do software (ActiveCorp). Se alguém puder me ajudar, ficarei muito grato. Daniel
  3. Show!!! Funcionou perfeitamente! Mais uma vez muito obrigado!! Um Grande Abraço!
  4. Boa Tarde Datilas! Deu certo! Consegui enviar. Só que conversei com o suporte da Empresa e, para adicionar um motorista é em outro local... customers/addDriver. Ficou assim essa rotina do motorista e fechou comunicação. Só uma dúvida: Porque quando eu envio na primeira vez funciona certinho e da segunda vez em diante dá erro? Veja como ficou o código abaixo que coloquei num botão e teste pra ver se pode me ajudar, por favor... procedure TForm1.Button1Click(Sender: TObject); var code : Integer; sResponse : String; Json : String; JsontoSend, AResponseContent : TStringStream; iStatusCode : Integer; begin Json := '{"Customer": { "DocumentType" : "CNPJ", "DocumentNumber" : "11229082000167" }, "Driver": { "PhoneCountry": "+55", "PhoneNumber": "19999690130", "Name": "Daniel Marcelo"} }'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); try IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'utf-8'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey','58fb05c3-4e8b-4929-b7df-95bd261035c9'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey','629eda6f-9df5-40e7-a94e-4c54cec83a15'); IdHTTP1.Response.ContentType := 'applicattion/json'; IdHTTP1.Response.CharSet := 'utf-8'; try IdHTTP1.Post('https://api.tudoentregue.com.br/v1/customers/AddDriver',JsontoSend, AResponseContent); except on E:EIdHTTPProtocolException do begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Request: ' + #13+#10 + e.Message); exit; end; end; Memo1.Lines.Clear; Memo1.Lines.Add('Response Content: '+AResponseContent.DataString); Memo1.Lines.Add('Response Code: ' + InttoStr(IdHTTP1.ResponseCode)); Memo1.Lines.Add('Response Text: ' + IdHTTP1.ResponseText); finally JsontoSend.Free(); AResponseContent.Free(); end; end; Não sei como lhe agradecer em tudo que tem me ajudado! Muito Obrigado mesmo e que Deus te abençoe! Grande Abraço! Daniel
  5. Pra mim, na primeira vez que rodo retorna vazio. Na segunda vez em diante retorna o mesmo erro que aparece pra você. Por favor, dê uma olhada se pode me ajudar. O código abaixo está com o App e Requester Key... Não sei como fechar essa comunicação... lembrando que estou usando o componente IDHTTP. segue código... var code : Integer; sResponse : String; Json : String; JsontoSend, AResponseContent : TStringStream; iStatusCode : Integer; begin Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "123", "DeviceKey": "123456", "DeviceId": "222555",'; Json := Json +'"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13425066", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); try IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'UTF-8'; IdHTTP1.Request.Method := 'POST'; IdHTTP1.Request.Username := ''; IdHTTP1.Request.Password := ''; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey','58fb05c3-4e8b-4929-b7df-95bd261035c9'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey','629eda6f-9df5-40e7-a94e-4c54cec83a15'); IdHTTP1.Response.ContentType := 'applicattion/json'; IdHTTP1.Response.CharSet := 'UTF-8'; try sresponse := IdHTTP1.Post('https://api.tudoentregue.com.br/v1/drivers',JsontoSend); except on E:EIdHTTPProtocolException do begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Request: ' + #13+#10 + e.Message); exit; end; end; Memo1.Lines.Clear; Memo1.Lines.Add(sResponse); finally JsontoSend.Free(); end; end;
  6. Certo, Mas como faço para usar como você fez no seu exemplo inicial com o THTTPClient? (apresenta undeclared identifier) Ou com o TIDHTTP que estou usando terei o mesmo efeito? É que não estou tendo retorno usando o TIDHTTP... Obrigado!
  7. Então... Inseri as informações na uses, porém quando vou compilar, não encontra o arquivo, por exemplo: "file not found: NetConsts.dcu" Obrigado!
  8. Bom dia Datilas! Muito obrigado por me ajudar! Porém, quando inseri as keys e tentei transmitir um arquivo obtive uma resposta vazia e os dados não foram inseridos. Isso quando apenas inseri as chaves utilizando o componente idhttp que eu estava utilizando. Testei também conforme seu código só que apresentou erro "undeclared identifier: 'THTTPClient' Como devo declarar na uses para corrigir o problema? (uso Delphi Rad Studio XE). Desde já agradeço se puder me ajudar novamente. Grande abraço! Daniel
  9. Boa Tarde Pessoal! Se puderem me orientar, preciso consumir uma API (segue documentação... https://api.tudoentregue.com.br/Documentacao/index.html) Quanto à geração dos arquivo no formato Json, eu já consegui entender. Porém, já tentei de várias formas e não consigo fechar comunicação com web service para Post do arquivo. Vi na documentação que tem um "AppKey" e um "RequesterKey". As duas chaves eu possuo mas não tenho ideia de onde as defino. securityDefinitions": { "AppKey": { "type": "apiKey", "in": "header", "name": "AppKey", "description": "Identificador do software Homologado junto à ActiveCorp para integrar dados ao TudoEntregue." }, "RequesterKey": { "type": "apiKey", "in": "header", "name": "RequesterKey", "description": "Identificador único do Motorista/Cliente junto ao TudoEntregue." Estou utilizando IDHTTP, mas seria interessante que o envio fosse através de HTTPS. Vejam como estou fazendo: var code : Integer; sResponse : String; Json : String; JsontoSend : TStringStream; begin Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "", "DeviceKey": "", "DeviceId": "",'; Json := Json +'"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13400000", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}'; JsonToSend := TStringStream.Create(utf8Encode(Json)); try IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'UTF-8'; IdHTTP1.Request.Method := 'POST'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Response.ContentType := 'applicattion/json'; IdHTTP1.Response.CharSet := 'UTF-8'; try sResponse := IdHTTP1.Post('http://api.tudoentregue.com.br/v1/drivers',JsontoSend); except on E:EIdHTTPProtocolException do begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Request: ' + #13+#10 + e.Message); exit; end; end; Memo1.Lines.Clear; Memo1.Lines.Add(sResponse); finally JsontoSend.Free(); end; end; Alguém poderia me dar um exemplo de como enviar os arquivos se possivel em HTTPS? Desde já agradeço! Daniel
  10. Boa Noite Juliana! Testei conforme me orientou, porém continua gerando o arquivo remessa da mesma forma. Segue novamente para análise arquivos Titulos.ini e o arquivo remessa. Apenas para informação, utilizo ACBRMonitorPlus versão 1.2.0.41; Desde já agradeço o empenho para me ajudar. Att. Daniel CB120702.REM Titulos.ini
  11. Boa Noite Felipe! Muito obrigado pelo retorno! Desculpe responder somente agora. É que estou com outros bancos para homologar. Funcionou perfeitamente conforme sua orientação. Att. Daniel
  12. Boa Tarde Juliana! Mesmo informando as propriedades que você citou, os Registros do segmento P das posições 58 e 59 não se alteraram. Para melhor avaliar, seguem anexo os arquivos Titulos.ini e o arquivo remessa gerado. Se puder me ajudar, ficarei muito grato. Att. Daniel CB120700.REM Titulos.ini
  13. Boa Tarde Juliana! Mais uma vez obrigado pelo retorno! Vou ajustar o sistema para informar esses parâmetros. Att Daniel
×
×
  • Create New...