Versões comparadas
comparado com
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
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 decodeencode. O uso ou não deve ser avaliado pelo desenvolvedor.
Aviso |
---|
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 correto na resposta de uma requisição | X |
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.
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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 fonte 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 correto. @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 := FWhttpEncodeFWHttpEncode(cReturn) Endif Self:SetResponse(cReturn) Return .T. |
Informações |
---|
Essa função está disponível na lib 20210517 ou superior |
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { background: #FF9900; !important } .menu-item.active-tab { border-bottom: none !important; } </style> |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas