Escolar Documentos
Profissional Documentos
Cultura Documentos
Base de Conhecimento
FWhttpEncode
Tempo aproximado para leitura: 5 minutos
Descrição:
Função que trata corretamente o retorno de requisições REST Protheus, devolvendo o encode correto para strings que possam
possuir caracteres diferentes entre o utilizado no sistema e o UTF-8, por exemplo.
Importante: Nem toda string necessita realizar o tratamento de decode. O uso ou não deve ser avaliado pelo desenvolvedor.
Sintaxe:
FWHttpEncode( <cString> )
Parâmetros:
Nome Tipo Descrição Obrigatório
cString Caracter String que receberá tratamento para ser codificada no encode X
correto na resposta de uma requisição
Retorno:
cString → Caracter - String no encode correto da requisição
Exemplo:
O exemplo abaixo mostra os possíveis problemas ao não chamar a função encodeutf8 nos fontes de serviços REST e
possíveis problemas ao chamar a mesma.
FWHasGed
#Include "totvs.ch"
#Include "restful.ch"
//-------------------------------------------------------------------
/*/{Protheus.doc} MeuTeste
Serviço REST de exemplo que mostra como tratar corretamente
as respostas de mensagem.
@author framework
@since 01/10/2021
@version 1.0
/*/
//-------------------------------------------------------------------
wsrestful meuteste description 'Classe teste de rest'
Wsdata Id as character
wsmethod GET teste1 description 'teste1' wssyntax "/api/framework/v1/meuteste/teste1/{id}";
path "/api/framework/v1/meuteste/teste1/{id}"
END WSRESTFUL
//-------------------------------------------------------------------
/*/{Protheus.doc} Teste1
Serviço (get) para testes de retorno das requisições tratando encode corretamente
No postman ou outro tipo de app para testes, podemos fazer da seguinte maneira:
Ao passar o pathparam id= 1, estamos dizendo para o sistema que não vamos fazer nada dentro do fon
Ao passar o pathparam id=2, vamos dizer para o nosso fonte fazer encodeutf-8 na mão
ao passar o pathparam id=3, vamos dizer ao nosso fonte para fazer o tratamento correto via lib.
Desta forma, não importa se o header Accept-Charset: UTF-8 for enviado, o tratamento sempre é o co
@author framework
@since 01/10/2021
@version 1.0
/*/
//-------------------------------------------------------------------
wsmethod GET teste1 WSSERVICE meuteste
Local cReturn as character
cReturn := "imã"
//não quero que faça encode. Aqui só vai retornar correto se o client enviar o header
//Accept-Charset: UTF-8
If self:id == '1'
Conout('faz nada')
//Quero que faça encode. Aqui só vai retornar correto se o client NÃO enviar o header
//Accept-Charset: UTF-8
ElseIf self:id == '2'
cReturn := EncodeUtf8(cReturn)
//Quero que a função de lib avalie o encode. Aqui sempre vai retonar certo, independente do
//Accept-Charset
ElseIf self:id == '3'//faz o processo certo
cReturn := FWhttpEncode(cReturn)
Endif
Self:SetResponse(cReturn)
Return .T.
Política de Termos
privacidade de uso