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 - Erro: Host not found em consumo Rest

time.pngTempo aproximado para leitura: 00:01:00 min

Ocorrência

Ao efetuar o consumo de um serviço REST utilizando a classe FwRest(), eu tenho sucesso, porém ao efetuar a segunda requisição, é exibido o erro abaixo quando utilizado o método GetLastError():

HOST NOT FOUND


Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus)  – ADVPL – A partir da versão 12.1.17

Causa
Este erro ocorre porque na primeira requisição é enviado implicitamente um (ou mais) cookie(s), no cabeçalho da requisição por meio do MIME type Set-Cookie.

Esta informação fica evidente quando efetuamos a requisição via ferramentas externas (ex: Postman), contudo na segunda requisição, o cookie não é enviado, porém é utilizado:

IMG01: Cookies enviados (Primeira requisição)



IMG02: Mime type set - cookie (Primeira requisição)


IMG03: Cookies utilizados na aba cookies, porém não enviados (Segunda requisição)


Solução
Na segunda requisição para a mesma URI (Uniform Resource Identifier), realizar a adição dos cookies no vetor do cabeçalho que será enviado no método Post():

/** PRIMEIRA REQUISIÇÃO JÁ REALIZADA **/

// INFORMA O RECURSO E ENVIA O JSON NO CORPO DA REQUISIÇÃO
oRest:SetPath(cPath)
oRest:SetPostParams(oJson:ToJson())

// REALIZA O ENVIO DO USUÁRIO E SENHA NO CABEÇALHO
AAdd(aHeader, aSession[1][1] ": "+ aSession[1][2])
AAdd(aHeader, aSession[2][1] ": "+ aSession[2][2])

// ENVIA O COOKIE QUE JÁ FOI MONTADO CONFIGURADO NA REQUISIÇÃO ANTERIOR
If (Len(oRest:oResponseH:aHeaderFields) > 0)
AAdd(aHeader, "Cookie: " + oRest:oResponseH:aHeaderFields[AScan(oRest:oResponseH:aHeaderFields, {|x| Upper(AllTrim(x[1])) == "SET-COOKIE"})][2])

// REALIZA O ENVIO PELO VERBO HTTP POST
If (oRest:Post(aHeader)) // SE SUCESSO, GERA OBJETO JSON COM A RESPOSTA
oJson:FromJson(oRest:GetResult())
Else // SE ERRO, EXIBE A MENSAGEM NO CONSOLE DO SERVIDOR
ConOut(Repl("-", 80))
    ConOut(PadC("Couldn't generate the application token", 80))
    ConOut(Repl("-", 80))
EndIf
EndIf

/** DEMAIS PROCESSO PÓS REQUISIÇÃO **/


Saiba mais
Mdn - Cookies HTTP
FWRest

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 _