Mensagem 404 not found ao tentar consumir serviço rest

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

O 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.

No Postman não tem nada no contente-length, está configurado Content-Type e Authorization com o token para acesso ao serviço

Fernando, adicione o https:// ou http:// na declaração do oRestClient. Fiz um teste aqui com o endereço completo e deu certo.

Boa Tarde,

Seu path está igual a sua URL mas sem uma barra que separe, creio que seu setpath esteja incorreto, já que da forma que está, é como se envia-se:

www.jadlog.com.br/embarcador/api/pedido/incluirwww.jadlog.com.br/embarcador/api/pedido/incluir

Por isso não está encontrando. Deixe assim adicionando uma barra: www.jadlog.com.br/embarcador/api/pedido/incluir/www.jadlog.com.br/embarcador/api/pedido/incluir

Atenciosamente,

Tentei como voce sugeriu mas deu a mesma mensagem.

Bom dia. O path não deve ser a mesma URL:


Local oRestClient  := FWRest():New("www.jadlog.com.br/embarcador/api/pedido/incluir")
oRestClient:setPath("www.jadlog.com.br/embarcador/api/pedido/incluir")

Correto seria:


Local oRestClient  := FWRest():New("www.jadlog.com.br/embarcador/api/")
oRestClient:setPath("pedido/incluir")

UPDATE:


Local oRestClient  := FWRest():New("https://www.jadlog.com.br/embarcador/api/")
oRestClient:setPath("pedido/incluir")

da forma acima tive retorno positivo

abs