ADVPL – Como conectar em um serviço Rest com autenticação em cabeçario 2


Para autenticar fornecendo seus usuário e senha em um cabeçalho de HTTP Basic, você deve enviar no HEADER da requisição HTTP o campo Authorization conforme o modelo abaixo:

GET /rest/sample
Host: localhost:8080
Accept: application/json
Authorization: BASIC YWRtaW46MTIzNDU2

A chave precisa estar composta do usuário e senha no formato base64, ou seja, utilize a função: Encode64 ()

Usuário e senha precisarão estar juntos ( usuário:senha ), exemplo:
aAdd(aHeader,”Authorization: Basic “+Encode64(“usuário“+”:”+”senha” ) )

 

Exemplo de código:

method JsonPost(cURL, cPath, cJSON) class teste
local aHeader := {}
Local aAux :={}
Local iVez :=0
local aPostRet
Local bRet
Local cHRet

AADD(aHeader,’POST /dataservice/consultarotacep HTTP/1.1′)
AADD(aHeader,’Host: sitexxx.com.br’)

AADD(aHeader,’Content-Type: application/json’)

AADD(aHeader,”cache-control: no-cache”)
aAdd(aHeader,”Authorization: Basic “+Encode64(“usuário“+”:”+”senha” ) )

cId := HttpPost(cURL + cPath, , cJson, 120, aHeader, @cHRet) // executa url

bRet := (‘OK’ $ cHRet) // Valida retorno

 

 


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

2 pensamentos em “ADVPL – Como conectar em um serviço Rest com autenticação em cabeçario

  • Wanderson Fernandes de Souza

    Boa Tarde,

    Não estou conseguindo finalizar minha API com autenticação, tenho um fonte pequeno para realizar este teste e não sei mais o que fazer para que a autenticação seja efetuada com sucesso.
    Vejo o Fonte:
    #include ‘protheus.ch’

    user function REST0002()
    Local cUrl := ‘http://meuip:1081/rest/’
    Local cPath := ‘helloworld/OlaMundo’
    Local oRest
    Local aHeader := {}

    //Consumindo com autorização basica
    AADD(aHeader,’Content-Type: application/json’)
    AADD(aHeader,’cache-control: no-cache’)
    aAdd(aHeader,’Authorization: BASIC ‘+ Encode64(‘WFSOUZA’+’:’+’vsp#3falcon@’))
    //Instancia o objeto
    oRest := FwRest():New(cUrl)

    //Define o rescurso que sera usado
    oRest:setPath(cPath)

    //chama o metodo get
    If oRest:get()
    MsgAlert(oRest:GetResult())
    Else
    MsgAlert(oRest:GetLastError())
    EndIf

    return

    Agradeço se alguma puder me ajudar.

  • admin Autor do post

    Olá Wanderson.

    Em qual etapa vc não conseguiu evoluir ? Consegue enviar mais detalhes (se possível, compartilhe o error log) ?