Application/x-www-form-urlencoded utilizando FwRest

Bom dia!

Pesquisei alguns tópicos aqui no DevForum sobre como enviar body com Content-Type igual a application/x-www-form-urlencoded, mas nenhum parece estar com o problema que estou tendo.

Ao enviar os dados tanto pela classe FwRest e pela função HttpPost, recebo o seguinte erro: Unsupported Media Type.

Fiz alguns ajustes mas não tenho ideia de qual pode ser o problema, alguém poderia me dar uma luz?

Observação: Pelo Postman funciona normalmente.


oRest := FwRest():New('https://oauth.hm.bb.com.br')

oRest:SetPath('/oauth/token')

aAdd(aHeader, 'Content-Type: application/x-www-form-urlencode')

cSend := 'grant_type=client_credentials&scope=cobrancas.boletos-requisicao cobrancas.boletos-info'

oRest:SetPostParams(cSend)
oRest:Post(aHeader)

Agradeço desde já.

Giordano, você consegue fazer essa requisição no Postman por exemplo? Como você monta ela por lá?

Achei uma documentação do BB que informa que ao consumir essa API, parece ser necessário informar uma autenticação BASIC: https://developers.bb.com.br/docs/oauth/pt-BR/client-credentials.html

Daniel, removi a autenticação Basic do exemplo pois a chave é confidencial. Em meu projeto estou utilizando ela.

Giordano,

O erro ocorre por conta do header, existe um pequeno erro no valor do cabeçalho.

O correto é Content-Type: application/x-www-form-urlencoded e está escrito Content-Type: application/x-www-form-urlencode.

Corrigindo o cabeçalho conforme o exemplo abaixo, a requisição vai "funcionar", vai retornar que ela exige autenticação:


aAdd(aHeader, 'Content-Type: application/x-www-form-urlencoded')


Além disso, quando necessário utilizar parâmetros na URI, a classe FWRest agora possui o método SetGetParams, que permite informar os parâmetros da URI mesmo em uma requisição POST:

https://tdn.totvs.com/display/framework/FWRest

Jesus… era isso mesmo… Muito obrigado pelo help, Daniel.

Cara, demorei pra descobrir que era isso hein, fiz a requisição em JS e fiquei vendo os headers no navegador etc… :smiley: