Envio do Body Encodado #212
valdirdill
started this conversation in
General
Replies: 3 comments 4 replies
|
Bom dia... acho que você deve trabalhar com form-data para consumir essa api. |
2 replies
|
Entendi. |
0 replies
|
"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 ? |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
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?
All reactions