Alguém já usou a chave SECURITY=1 em um webservice SOAP para ativar a autenticação ?
Se sim, como criamos o usuário e senha e onde informamos isso no consumo do método?
Alguém já usou a chave SECURITY=1 em um webservice SOAP para ativar a autenticação ?
Se sim, como criamos o usuário e senha e onde informamos isso no consumo do método?
Adriano,
O usuário para autenticação no SOAP é o usuário do Protheus, assim como no REST, basta então cadastrar o usuário no SIGACFG (Configurador).
Para realizar a autenticação, você deve informar no header da sua requisição SOAP, a informação de autenticação (Authorization
), sendo que hoje o SOAP só autentica via BASIC
.
Abaixo um exemplo de consumo de SOAP com autenticação em ADVPL:
//-------------------------------------------------------------------
/*{Protheus.doc} u_SoapTest
Teste de consumo de serviço SOAP do Protheus
@author Daniel Mendes
@since 24/09/2020
@version 1.0
*/
//-------------------------------------------------------------------
function u_SoapTest()
local oWsdl as object
oWsdl := TWsdlManager():New()
oWsdl:lVerbose := .T.
//Verifica o endereço, se existe algum serviço disponível e se existe o serviço que quero utilizar
if !oWsdl:ParseURL("http://localhost:8080/ws/FWDICTIONARY.apw?WSDL") .Or. Empty(oWsdl:ListOperations()) .Or. !oWsdl:SetOperation("GETTABLELIST")
ConErr(oWsdl:cError)
else
//Informo o usuário e senha via basic em base64 no header da requisição
oWsdl:AddHttpHeader("Authorization", "Basic " + Encode64("admin:1"))
//Informa o valor do primeiro parâmetro do serviço que vou consumir
oWsdl:SetValue(0, "SED")
//Consumo o serviço
if !oWsdl:SendSoapMsg()
ConErr(oWsdl:cError)
endif
//Exibo no console o valor da resposta do serviço
ConOut("GetSoapResponse:", oWsdl:GetSoapResponse())
endif
FreeObj(oWsdl)
oWsdl := nil
return
Obrigado pela ajuda Daniel!!!!!!!
— Adriano Moreira 24 de Sep de 2020