Envio do Body Encodado #212
Replies: 3 comments 4 replies
-
Bom dia... acho que você deve trabalhar com form-data para consumir essa api. |
Beta Was this translation helpful? Give feedback.
-
Entendi. |
Beta Was this translation helpful? Give feedback.
-
"Olha esse artigo que eu fiz, embora não esteja usando o RR4D nele:" Não existe uma forma de fazer isso pela própria biblioteca RR4D ? |
Beta Was this translation helpful? Give feedback.
-
Bom dia,
Estou tentando consumir api iFood, mas não estou conseguindo.
Estou fazendo assim:
VJsonObj.addPair('clientid', '2ec00763-ae30-487e-974b-108e1f41e6fa');
VResponse := RESTRequest4D.TRequest.New
.BaseURL(VURL)
.ContentType(REST.Types.CONTENTTYPE_APPLICATION_X_WWW_FORM_URLENCODED)
.AddBody(VJsonObj)
.Post;
Mas ocorre o erro: {"error":{"code":"BadRequest","message":"Missing required parameter 'clientid'"}}
Ou seja, como se não tivesse sido enviado o parâmetro clientid, mas está indo no body.
No Postman está funcionando beleza. Não tem muito o que errar, pois é apenas um parâmetro e a url.
Acredito que o problema possa estar no fato do VResponse estar enviando o contentType do body no padrão application/json.
No Postman vai no padrão application/x-www-form-urlencoded, que é como deve ser.
O curl no Postman fica assim:
--data-urlencode 'clientId=2ec00763-ae30-487e-974b-108e1f41e6fa'
A questão é: como enviar o body com contentType que eu defina?
Debuguei e vi que ele assume o padrão application/json, mesmo que o contentType geral esteja assim: VResponse.ContentType(REST.Types.CONTENTTYPE_APPLICATION_X_WWW_FORM_URLENCODED)
o .AddBody(...) até tem o parâmetro para informar o contentType, mas vai pqe na minha aplicação, a função não aceita o segundo parâmetro
Isto não funciona -> .AddBody(VJsonObj, REST.Types.CONTENTTYPE_APPLICATION_X_WWW_FORM_URLENCODED)
Alguma sugestão?
Beta Was this translation helpful? Give feedback.
All reactions