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- Consumo de API com redirect

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

Ocorrência
Existe alguma função para consumo de API com redirect?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Todas as versões

Soluções

Atualmente não existe função ou método específico para fazer o redirect no consumo ou deixá-lo automático, todavia é possível capturar o retorno do header da requisição e refazê-la assim efetuando o redirect de forma manual.

 

Exemplo

#include 'PROTHEUS.CH'
#include "tlpp-core.th"
#include "tlpp-rest.th"

user function cgettst1()

Local cUrl := 'https://suaapi.com.br'
Local oRestClient := FWRest():New(cUrl)
Local aHeader := {}
Local aHead := {}
Local cLink
Local nTam
Local cPath
Local cRet :=""
Local cRet1 :=""
Private oJson

aAdd(aHeader, "Content-Type: application/xml; charset=UTF-8" )
aAdd(aHeader, "Accept: application/xml" )
aAdd(aHeader, "Authorization:")
aAdd(aHeader, "x-Authorization-Encrypted-Data: ")
aAdd(aHeader, "x-Authorization-Raw-Data: ")

oRestClient:setPath("/seu path")

//Primeira requisição
If oRestClient:Get(aHeader)
cRet:=("GET",oRestClient:GetResult())
Else
ConOut("GET", oRestClient:GetLastError())
EndIf

cLink:= oRestClient:getHeader("Location") //Pega o link para realizar a seguda requisição

//Monta o header para a segunda requisição
aAdd(aHead, "content-length:" +FwCutOff(oRestClient:getHeader("content-length")))
aAdd(aHead, "cache-control:" +FwCutOff(oRestClient:getHeader("cache-control")))
aAdd(aHead, "pragma:" +FwCutOff(oRestClient:getHeader("pragma")))
aAdd(aHead, "expires:" +FwCutOff(oRestClient:getHeader("expires")))
aAdd(aHead, "x-request-id:" +FwCutOff(oRestClient:getHeader("x-request-id")))
aAdd(aHead, "x-newrelic-app-data:"+FwCutOff(oRestClient:getHeader("x-newrelic-app-data")))
aAdd(aHead, "x-aspnet-version:" +FwCutOff(oRestClient:getHeader("x-aspnet-version")))
aAdd(aHead, "x-powered-by:" +FwCutOff(oRestClient:getHeader("x-powered-by")))
aAdd(aHead, "strict-transport-security:"+FwCutOff(oRestClient:getHeader("strict-transport-security")))

//tratamento do link para efetuar requisição
nTam := Len(cLink)
cPath := Right( cLink , ntam-36)
cPath := FwCutOff(cPath)
cLink := left(cLink,36)

//Limpa o objeto e instancia novamente a classe
Freeobj(oRestClient)
oRestClient := FWRest():New(cLink)
oRestClient:setpath(cPath)

If oRestClient:Get(aHead)
cRet:=("GET",oRestClient:GetResult())
lRet:= GzStrDecomp( cRet, Len(cRet), @cRet1 ) //descompacta o gzip retornado para apresentar o XML
Else
ConOut("GET", oRestClient:GetLastError())
EndIf

RETURN

 

Saiba Mais

FWRest

FwCutOff 

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

0 Comentários

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 _