Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Obter IP via Rest

time.png Tempo aproximado para leitura: 00:03:00 min

Dúvida
E possível identificar um acesso proveniente de um "IP Externo" à rede Local / Sistema Protheus12.1.17, quando utilizado os Métodos: "GET" e/ou "POST" por terceiros?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Até o release 12.1.27

Solução
A função() retorna um array com as informações, enviadas no cabeçalho da requisição, as quais o servidor REST Protheus utiliza. Dentre estas informações, está o endereço IP da requisição, acessível diretamente por HTTPHEADER('__IPCONN__').

Esta somente funciona até 12.1.27 utilizando Rest AdvPL.

A seguir, o exemplo de uma API simples:

#INCLUDE "TOTVS.CH"
#INCLUDE "RESTFUL.CH"

WSRESTFUL TGETSEC DESCRIPTION "Exemplo de serviço REST"

WSMETHOD GET DESCRIPTION "Teste GET" WSSYNTAX "/_TGETSEC || /_TGETSEC/{id}"

END WSRESTFUL

WSMETHOD GET WSSERVICE TGETSEC
Local cIpConn

cIpConn := HTTPHEADER('__IPCONN__')

::SetResponse(EncodeUtf8('Requisição recebida do endereço: ' + cIpConn))

Return .T.

 

Para conseguir o IP da requisição para o Rest 2.0 deve utilizar o método getClientIp() no objeto oRest.

 

A seguir exemplo:

#include 'PROTHEUS.CH'
#include 'TOTVS.CH'
#include 'RESTFUL.CH'
#include 'RWMAKE.CH'
#include 'TOPCONN.CH'
#Include "FWMVCDEF.CH"

WSRESTFUL EXECTST DESCRIPTION "TESTE"
WSMETHOD GET DESCRIPTION "TESTE" WSSYNTAX "/EXECTST"
END WSRESTFUL

WSMETHOD GET WSSERVICE EXECTST
local cClientIP as character

cClientIP := oRest:getClientIP()
cResponse := "{'Client IP':" + cClientIP + "}"

oRest:SetResponse(cResponse)
Return

 

Observação:
oRest:getClientIP
Entendendo as novidades do REST 2.0 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 1

1 Comentários

  • Avatar
    Luiz Guilherme Leal Goggi

    é array de informações ou string com o ip? Além disso, funcionava na versão 12.1.25, migrei pra versão 12.1.33 e parou de funcionar

    0
    Ações de comentário Permalink
Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _