Nesse vídeo demonstraremos a utilização da classe TWSDLManager, que serve para consumir um WebService do tipo SOAP através das definições de sua WSDL.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe516 Realiza a integração com um WebService SOAP através do WSDL @type Function @author Atilio @since 05/04/2023 @see https://tdn.totvs.com/display/tec/Classe+TWsdlManager @obs **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe516() Local aArea := FWGetArea() Local cURL := "http://127.0.0.1:8091/ws/ZWSCLIENTES.apw?WSDL" Local cOperation := "VIEWCLI" Local oWSDL Local lRet Local cMsgWS := "" Local cResp := "" Local cJsonResp := "" //Monta a mensagem que será enviada cMsgWS := ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://127.0.0.1:8091/"> ' + CRLF cMsgWS += ' <soapenv:Header/> ' + CRLF cMsgWS += ' <soapenv:Body> ' + CRLF cMsgWS += ' <ns:VIEWCLI> ' + CRLF cMsgWS += ' <ns:CVIEWRECE>C0000101</ns:CVIEWRECE> ' + CRLF cMsgWS += ' </ns:VIEWCLI> ' + CRLF cMsgWS += ' </soapenv:Body> ' + CRLF cMsgWS += ' </soapenv:Envelope> ' + CRLF //Instancia em um objeto e desabilita o check de CAs em caso de http ao invés de https, referência: // https://centraldeatendimento.totvs.com/hc/pt-br/articles/5151712642839-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Mensagem-An-exception-occurred-ar-1-0-WsdlParser-Exception-Could-not-parse-schema-http-schemas-xmlsoap-org-wsdl- oWsdl := TWSDLManager():New() oWsdl:nTimeout := 120 oWsdl:bNoCheckPeerCert := .T. //Faz o parse do WSDL If oWsdl:ParseURL(cUrl) //Define a operação que será consumida do WS lRet := oWsdl:SetOperation(cOperation) //Se deu certo, envia o texto e pega a resposta If lRet oWsdl:SendSoapMsg(cMsgWs) cResp := oWsdl:GetParsedResponse() //Se houver resposta do WS If ! Empty(cResp) cJsonResp := SubStr(cResp, At("{", cResp)) ShowLog(cJsonResp) EndIf EndIf EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até próxima.