FWRest e conteudo Header

Bom dia, Estou consumindo uma API de terceiro, ao realizar teste pelo Postman funciona corretamente, ao realizar o mesmo requisição pelo Protheus gera mensagem de erro.

Analisando o Header do Postman ele preenche automaticamente o "Content-Length", simulando no Postman tirando este parâmetro gera o mesmo que ocorre no Protheus.

Abaixo segue trecho do fonte:


    oRstCliLog := FWRest():New(cUrlBase)
    oRstCliLog:setPath(cPath)
    oRstCliLog:SetPostParams(cJsonPos)


    aHeadOut := {}

    AAdd(aHeadOut, "Content-Type: application/json; charset=UTF-8")
    AAdd(aHeadOut, "Accept: application/json")
    Aadd(aHeadOut, "Authorization: Bearer 2|KqB3cwgxR4DeiyqmdhplD6FNP5xBpkGxhU58uDcN" )
    aAdd(aHeadOut,"Content-Length: " + Alltrim(Str(Len(cJsonPos))) )

Qual a forma correta de informar "Content-Length" no Protheus para que funcione igual ao Postman?

Edson, essa forma que você fez não funcionou? Pois é basicamente isso que fazemos.

Daniel, notei o seguinte mesmo forçando o envio do Content-Length, o sistema envia outro valor diferente do calculado no trecho do código repassado.

Remova alguns itens do cabeçalho, deixe desse jeito:

 oRest := FWRest():New("https://api.chatcorp.com.br/srvc")
 oRest:setPath("/w/send/text")

 aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')
 aadd(aHeadOut,'Content-Type: aplication\json;charset=UTF-8')

Edson,

Acredito que o problema seja nos bytes e não no tamanho da String enviada, pois são dados diferentes.

Faça a conversão da String do json para bytes com uma das funções dessa lista.

https://tdn.totvs.com/pages/viewpage.action?pageId=6063599

Jorge, identifiquei o problema ocorria devido alguns caracteres especiais na mensagem, realizei ajuste e Content-Length gerou com o tamanho correto.

Remova alguns itens do cabeçalho, e deixe dessa forma:

oRest := FWRest():New("https://api.chatcorp.com.br/srvc")

oRest:setPath("/w/send/text")

aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')

aadd(aHeadOut,'Content-Type: aplication\json;charset=UTF-8')