Ir para conteúdo
  • Cadastre-se

dev botao

Integração Delphi+iFood+RestClient


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 1471 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá pessoal!

Estou há alguns dias com um problema sem solução, realizando a integração do meu sistema em Delphi com o iFood estou me deparando com um erro no método de Atualizar um Item do cardápio.

Segue a rotina que estou utilizando e logo abaixo o erro apresentado:

  restClient := TRESTClient.Create(nil);
  restClient.Accept:='application/json, text/plain; q=0.9, text/html;q=0.8,';
  restClient.AcceptCharset:='utf-8, *;q=0.8';
  RESTClient.BaseURL:='https://pos-api.ifood.com.br/v1.0/skus/'+externalCode;

  restRequest:=TRESTRequest.Create(nil);
  restRequest.Client := restClient;
  restRequest.Method := rmPATCH;
  RESTResposta:=TRESTResponse.Create(Self);
  restRequest.Response := RESTResposta;
  restRequest.AddParameter('Content-Type','multipart/form-data',pkHTTPHEADER,[poDoNotEncode]);
  RESTRequest.AddParameter('Authorization','bearer '+aToken,pkHTTPHEADER,[poDoNotEncode]);
  RESTRequest.AddParameter('Accept','application/json',pkHTTPHEADER,[poDoNotEncode]);

  jsonObject := TJSONObject.Create;
  jsonObject.AddPair(TJSONPair.Create('merchantId',TJSONNumber.Create(dados.FDDadosiFoodMERCHANT_ID.value)));
  jsonObject.AddPair(TJSONPair.Create('name',TJSONString.Create(dados.FDProdutosNOME_PROD.AsString)));
  jsonObject.AddPair(TJSONPair.Create('price',TJSONObject.Create(TJSONPair.Create('value',TJSONNumber.Create(dados.FDProdutosPRECO1.AsString)))));

  restRequest.AddBody(jsonObject);

  restRequest.Execute;

  if(RESTResposta.StatusCode=202)then
    begin
      MemoStatus.Lines.Add('Produto alterado com sucesso!');
      Result:=true;
    end
  else
    begin
      MemoStatus.Lines.Add(RESTResposta.Content);
      Result:=false;
    end;

 

Erro apresentado:

"500 - Internal Server Error"

'{"timestamp":"2020-03-31T13:59:27.583+0000","status":500,"error":"Internal Server Error","exception":"org.springframework.web.multipart.MultipartException","message":"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: Missing initial multi part boundary","path":"/skus/1"}'

 

Se alguém puder me auxiliar ou já tenha implementado isso ou passado por esse erro, fico no aguardo.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores
  • Solution

Erro 500 geralmente é erro no Servidor. O indicado é contatar o responsável pelo servidor para pedir mais informações sobre o erro.

Por outro lado, talvez a requisição esteja malformada. Nesse caso, você precisa verificar a requisição que está enviando e analisar se ela realmente está do jeito que a documentação do servidor precisa receber.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1471 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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 conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...