Jump to content

diadoacbr

Integração Delphi+iFood+RestClient


Go to solution Solved by EMBarbosa,
  • Este tópico foi criado há 857 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 to comment
Share on other sites

  • 2 weeks later...
  • 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.

  • Like 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.