Você está na página 1de 2

Páginas / … /

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. 

 Disponível a partir da lib label 20201123

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.

 Essa função está disponível na lib 20210517 ou superior

documento_tecnico lib framework fwhttpencode rest_protheus

Política de Termos
privacidade de uso

Você também pode gostar