Jump to content

datilas

Membros
  • Content Count

    341
  • Joined

  • Last visited

  • Days Won

    1

datilas last won the day on June 29

datilas had the most liked content!

Community Reputation

79 Excellent

1 Follower

About datilas

  • Rank
    Membro Ativo
  • Birthday 03/05/1985

Profile Information

  • Sexo
    Masculino
  • Localização
    Cuiabá - MT

Recent Profile Visitors

1,374 profile views
  1. o que esta me encafifando é essa mensagem "Unsupported Media Type" tenta assim IdHTTPConexao.Request.Clear; IdHTTPConexao.Request.ContentType := 'application/json'; IdHTTPConexao.Request.CharSet := 'utf-8'; IdHTTPConexao.Request.CustomHeaders.Clear; IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); //IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json'); IdHTTPConexao.Response.ContentType := 'application/json'; IdHTTPConexao.Response.CharSet := 'utf-8';
  2. // comenta essa linha IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType); IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); //deixa essa IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json');//deixa essa // comenta essa linha IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Disposition', 'form-data; name="sku"'); IdHTTPConexao.Response.CharSet := 'UTF-8'; código limpo pra não confundir: Var iRespostaIfood: String; iJSON: String; iJSONStream, AResponseContent: TStringStream; Begin AResponseContent := TStringStream.Create(''); Try iJSON := ('{"merchantId": MerchantID,' + //CÓD DO RESTAURANTE '"externalCode":"205",' + '"availability": "AVAILABLE",' + '"name": "X BURGUER - TESTE",' + '"description": "PÃO, HAMBURGUER E QUEIJO",' + '"order": 1,' + '"schedules": [],' + '"price":{' + '"originalValue": 0,' + '"promotional": false,' + '"value": 12.50}' + '}'); mRetorno.Lines.Clear; mRetorno.Lines.Add(iJSON); iJSONStream := TStringStream.Create(iJSON); //Configura o HTTP IdHTTPConexao.Request.Clear; IdHTTPConexao.Request.CustomHeaders.Clear; IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json'); IdHTTPConexao.Response.CharSet := 'UTF-8'; Try IdHTTPConexao.Post('https://pos-api.ifood.com.br/v1.0/skus', iJSONStream, AResponseContent); iRespostaIfood := AResponseContent.DataString; //201 = Indica que novos parâmetros foram criados com sucesso If IdHTTPConexao.ResponseCode = 201 Then Application.MessageBox(PWideChar('Produto Cadastrado com Sucesso!'), 'Informação', MB_OK + MB_ICONINFORMATION); Except On e: EIdHTTPProtocolException Do Begin If (e.ErrorCode <> 200) Or (e.ErrorCode <> 201) Then Begin Application.MessageBox(PWideChar('Atenção! Ocorreu ao Cadastrar Produto no iFood. ' + e.ErrorMessage), 'Aviso', MB_OK + MB_ICONWARNING); Exit; End; End; End; Finally FreeAndNil(iJSONStream); FreeAndNil(AResponseContent); End;
  3. tenta ssim: Var iStringListProduto: TStringList; iRespostaIfood: String; iJSON: String; iJSONStream, AResponseContent: TStringStream; // iJSONEnviar : TIdMultipartFormDataStream; Begin // iJSONEnviar := TIdMultiPartFormDataStream.Create; AResponseContent := TStringStream.Create(''); Try iJSON := ('{"merchantId": MerchantID,' + //CÓD DO RESTAURANTE '"externalCode":"205",' + '"availability": "AVAILABLE",' + '"name": "X BURGUER - TESTE",' + '"description": "PÃO, HAMBURGUER E QUEIJO",' + '"order": 1,' + '"schedules": [],' + '"price":{' + '"originalValue": 0,' + '"promotional": false,' + '"value": 12.50}' + '}'); mRetorno.Lines.Clear; mRetorno.Lines.Add(iJSON); iJSONStream := TStringStream.Create(iJSON); //Configura o HTTP IdHTTPConexao.Request.Clear; IdHTTPConexao.Request.CustomHeaders.Clear; IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType); IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json'); //IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Disposition', 'form-data; name="sku"'); IdHTTPConexao.Response.CharSet := 'UTF-8'; Try IdHTTPConexao.Post('https://pos-api.ifood.com.br/v1.0/skus', iJSONStream, AResponseContent); iRespostaIfood := AResponseContent.DataString; //201 = Indica que novos parâmetros foram criados com sucesso If IdHTTPConexao.ResponseCode = 201 Then Application.MessageBox(PWideChar('Produto Cadastrado com Sucesso!'), 'Informação', MB_OK + MB_ICONINFORMATION); Except On e: EIdHTTPProtocolException Do Begin If (e.ErrorCode <> 200) Or (e.ErrorCode <> 201) Then Begin Application.MessageBox(PWideChar('Atenção! Ocorreu ao Cadastrar Produto no iFood. ' + e.ErrorMessage), 'Aviso', MB_OK + MB_ICONWARNING); Exit; End; End; End; Finally If Assigned(iJSONStream) Then FreeAndNil(iJSONStream); FreeAndNil(AResponseContent); End;
  4. pelo que vi na documentação não preencher ('"schedules": [],' +) caso não exista. { "merchantId": 999999, "ID do Restaurante (MerchantID)", "externalCode": "155", "COD PDV", "availability": "AVAILABLE", --"Disponibilidade do item", "name": "X BURGUER", "Nome do Item", "description": "PÃO, HAMBURGUER E QUEIJO", --" Descrição do Item (Composição)", "order": 0: "Ordem para o item aparecer no cardápio", "price": { "originalValue": 0: --"Valor Original do Item (Somente preencher caso o item estiver em promoção)", "promotional": false: --"Item está em promoção?" "value": 12 --"Valor do item (Valor que vai para aparecer na plataforma Ifood)" } } //preencher apenas se existir (schedules) { "merchantId": 999999, "ID do Restaurante (MerchantID)", "externalCode": 9430, "COD PDV" "availability": "AVAILABLE", --"Disponibilidade do item", "name": "Esfiha de Carne", "Nome do Item" "description": "Recheio com Mussarela.", --"Descrição do Item (Composição)", "schedules": [{ --"Disponibilidade dos itens " Dias da semana e horário funcionamento "" "dayOfWeek": "MONDAY" --" Dia da semana que funciona" }, { "dayOfWeek": "FRIDAY" --" Dia da semana que funciona" } ], "order": 1, --"Ordem para o item aparecer no cardápio", "price": { "Preço" "originalValue": 3.96, --"Valor Original do Item (Somente preencher caso o item estiver em promoção)" "promotional": true, --" Item está em promoção?" "value": 1.98 --"Valor promocional do item (Valor que vai para aparecer na plataforma Ifood)" } }
  5. pode ser por causa do acento na palavra "PÃO" tente converter o texto para utf-8 ou tira o acento para testar
  6. aqui eu tenho uma vps com owncloud a versão Enterprise tem um plugin que filtra arquivos por extensão o owncloud funciona como um dropbox então ele sobe o arquivo assim que possivel o que eu faço é compactar a pasta de xml's e o backup do db e altero a extensão para uma especifica ".bkx" e filtro no owncloud por essa extensão quando o cliente é infectado por um vírus a ultima versão que vai ter no meu backup é valida já que ransomware encripta o arquivo e altera a extensão, ele não afeta o arquivo que já subiu. sem contar que eu tenho total controle ao owncloud então eu posso habilitar e desabilitar um cliente sempre que necessário
  7. mostra o código que você ta usando
  8. isso é um comportamento de keylogger dificilmente você vai conseguir que um antivírus te deixe em paz, se voce precisa de um bugtrace voce poderia usar : http://madshi.net/madExceptDescription.htm https://www.eurekalog.com/downloads_delphi.php por exemplo, mas existe outros.
  9. geralmente se voce tem username e password não vai precisar de client_id, client_secret o client_id e client_secret geralmente é usado para gerar um token e depois fazer todas as requisições com esse token quando você tem username e password não precisa do token fica até mais facil para trabalhar qual componente e versão do delphi você ta usando?
  10. dificilmente esses serviços de api tem algum exemplo em delphi, na proxima vez que vc precisar de algum suporte com alguma api (caso eles não tenham um demo em dephi) peça um manual para uso com curl, pois fica mais facil adaptar para os componentes do delphi. por exemplo: curl -X GET "https://https://api.betalabs.netapi/clients/acting-as/MyClientID/in/MyDomainID" -H "accept: application/json" -H "Authorization: myAuthorization" -H "X-CSRF-TOKEN: " GET é a operação pode ser GET, POST, PATCH, DELETE, PUT. -H é Header -data é o body etc.. ai fica mais fácil até para o suporte deles te ajudarem.
  11. Como vc pode ver aqui: curl -X GET "https://https://api.betalabs.netapi/clients/acting-as/MyClientID/in/MyDomainID" -H "accept: application/json" -H "Authorization: myAuthorization" -H "X-CSRF-TOKEN: " Você vai precisar de um Authorization que é um token gerado a partir do client_id e client_secret e um X-CSRF-TOKEN que é gerado a partir do token então entre em contato com eles e peça mais informação sobre o modo de autenticação deles. esse é o primeiro passo, depois disso é que você vai trabalhar de verdade.
  12. vc vai precisar de um client_id e um client_secret fazer uma chama a um endereço que vai retornar um token e com o token vc vai poder consumir os outros serviços nesse endereço que vc passou não existe nenhum metodo para retornar o token
  13. remova o IdHTTP1 do seu formulario e tente usar assim: Var code: Integer; sResponse: String; Json: String; JsontoSend, AResponseContent: TStringStream; iStatusCode: Integer; http: TIdHTTP; Begin Json := '{"Customer": { "DocumentType" : "CNPJ", "DocumentNumber" : "11229082000167" }, "Driver": { "PhoneCountry": "+55", "PhoneNumber": "19999690130", "Name": "Daniel Marcelo"} }'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); http := TIdHTTP.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.Response.ContentType := 'applicattion/json'; http.Response.CharSet := 'utf-8'; Try http.Post('https://api.tudoentregue.com.br/v1/customers/AddDriver', 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; End; eu adicionei essas duas linhas: Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText); porque caso ResponseCode for 403,404,422 o indy vai levantar um except sendo que //IdHTTP1.ResponseCode = 403 Motorista não Relacionado. *response vazio* //IdHTTP1.ResponseCode = 404 Motorista não Localizado. *response vazio* então você não conseguiria tratar o erro de Motorista não Localizado por exemplo. caso tenha resolvido seu problema marque o post como melhor resposta clicando no sinal de no canto superior esquerdo do post
×
×
  • Create New...