Olá,
Esse WS permite autenticar com usuário e senha e gerar um token, com esse token você consegue consumir os demais serviços SOAP, enviando o mesmo no header.
Abaixo um exemplo bem simples e resumido de sua utilização:
//-------------------------------------------------------------------
/*{Protheus.doc} u_soapToken
Exemplo de SOAP com a geração de token para autenticação
@author Daniel Mendes
@since 23/08/2022
@version 1.0
*/
//-------------------------------------------------------------------
user function soapToken()
local oDictionary as object
local oToken as object
local oXML as object
local cTokenResponse as character
local cError as character
local cWarning as character
oToken := TWsdlManager():New()
//Geração do token
oToken:ParseURL("http://localhost:8080/ws/FWAUTHENTICATION.apw?WSDL")
oToken:SetOperation("TOKEN")
oToken:SetValue(0, "password")
oToken:SetValue(3, "admin")
oToken:SetValue(4, " ")
oToken:SendSoapMsg()
cError := ""
cWarning := ""
cTokenResponse := oToken:GetSoapResponse()
oXml := XmlParser(cTokenResponse, "_", @cError, @cWarning )
FWFreeVar(@oToken)
oDictionary := WSFWDICTIONARY():New()
if oDictionary:_HEADOUT == nil
oDictionary:_HEADOUT := {}
endif
aAdd(oDictionary:_HEADOUT, "Authorization: Bearer " + oXml:_SOAP_ENVELOPE:_SOAP_BODY:_TOKENRESPONSE:_TOKENRESULT:_ACCESS_TOKEN:Text)
oDictionary:cTABLEFILTER := "SED"
oDictionary:GETTABLELIST()
VarInfo("TableList", oDictionary:oWSGETTABLELISTRESULT)
FreeObj(@oDictionary)
FreeObj(@oXML)
return
Na documentação de configuração do SOAP, existe um outro exemplo um pouco maior e mais explicativo caso você precise:
https://tdn.totvs.com/display/framework/Configurar+Portais+e+Webservices
Documentação da implementação:
https://tdn.totvs.com/pages/viewpage.action?pageId=567757105