Olá. Estou desenvolvendo uma rotina para consumir uma API de uma transportadora, fiz um teste pelo postman, e está funcionando normal. Via ADVPL, dá a mensagem "404 not found", utilizo o mesmo endereço no FWREST():New() e no SetPath() mas já fiz varias mudanças mas continua retornando a mensagem. No Postman configurei apenas: KEY = Authorization VALUE = Bearer (numero do token recebido da transportadora)
Eu tentei conforme abaixo mas ocorreu a mesma mensagem (404 not found).
oRestClient := FWRest():New("www.jadlog.com.br")
oRestClient:setPath("/embarcador/api/pedido/incluir")
Segui a orientação do Rodrigo agora deu certo, mas, ocorreu a seguinte mensagem: 405 Method not allowed, agora, tem a ver com oRestClient:SetPostParams(cJson) ?
Method Integra(cJson, cUrlPost) Class xIntegraTransp
Local oRestClient := FWRest():New("www.jadlog.com.br/embarcador/api/pedido/incluir")
Local aHeadOut := {}
Local cJsonRet := ""
Local _cAutoriz := ""
Local oJson := JsonObject():New()
cToken := "eyxyxxyzxeyxyxxyzxeyxyxxyzx.eyxyxxyzxeyxyxxyzxeyxyxxyzx.eyxyxxyzxeyxyxxyzxeyxyxxyzx"
aadd(aHeadOut,'Content-Type: application/json' )
aadd(aHeadOut,'Authorization: Bearer '+cToken)
oRestClient:setPath("www.jadlog.com.br/embarcador/api/pedido/incluir")
// oRestClient:SetPostParams(EncodeUTF8(cJson)) // nao funcionou
oRestClient:SetPostParams(cJson)
If oRestClient:Post(aHeadOut)
cJsonRet := oRestClient:GetResult()
EndIf
if oRestClient:get()
MsgAlert(oRestClient:GetResult())
else
MsgAlert(oRestClient:GetLastError()) // retorna "404 not found"
Endif
Manda o código para o povo analisar
— Patrick Zerbinatti 27 de May de 2020O Postman inclui diversos headers em sua requisição, mesmo que você não peça isso, com isso a sua simulação no Postman por vezes tem um resultado completamente diferente, é necessário cautela ao utilizar o mesmo, por exemplo erros de CORS, no navegador você pode ter, mas o Postman não vai gerar tal problema pra você. Verifique se o Postman criou algum header na sua requisição, o mais comum é o content-length.
— Daniel Mendes 27 de May de 2020No Postman não tem nada no contente-length, está configurado Content-Type e Authorization com o token para acesso ao serviço
— Fernando Pinottio 27 de May de 2020Fernando, adicione o https:// ou http:// na declaração do oRestClient. Fiz um teste aqui com o endereço completo e deu certo.
— Rodrigo Morgon 28 de May de 2020