WebService sem SSL, e sem Certificado, apenas com XML, usuario e senha
Código: Selecionar todos
xmldom = win_oleCREATEOBJECT("MSXML2.DOMDocument.5.0")
xmldom:async = .T.
xmldom:validateOnParse = .T.
xmldom:resolveExternals := .T.
xmldom:preserveWhiteSpace = .T.
url := "http://189.1.164.238:8080/issonline/servlet/anfse" //webservice de Penápolis
xmldoc = win_oleCREATEOBJECT("MSXML2.XMLHTTP.6.0")
xmldoc:open("POST", url, .F.)
xmldoc:setrequestheader("Content-Type","application/x-www-form-urlencoded")
xmldoc:setRequestHeader("SOAPAction", "nfseaction/ANFSE.Execute" )
Texto := '<?xml version="1.0" encoding="ISO-8859-1"?>'
Texto += '<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"';
+ ' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="nfse" xmlns:wsdlns="nfse" xmlns:tns1="ISS">'
Texto += '<SOAP-ENV:Body>'
Texto += '<wsdlns:Nfse.Execute xmlns:wsdlns="nfse">'
Texto += '<wsdlns:Operacao>'+cOperacao+'</wsdlns:Operacao>'
Texto += '<wsdlns:Usuario>'+cCNPJ+'</wsdlns:Usuario>'
Texto += '<wsdlns:Senha>'+cSenha+'</wsdlns:Senha>'
Texto += '<wsdlns:Webxml>'
Texto += '<NFSE>' // para quem não sabe usa-se < para < e > para >, pois é um xml dentro de outro
Texto += '<IDENTIFICACAO> // então usa-se dessa maneira para não terminar a tag prematuramente
Texto += '<INSCRICAO>76337</INSCRICAO>'
Texto += '<LOTE>18</LOTE>'
Texto += '<SEQUENCIA>9</SEQUENCIA>'
Texto += '</IDENTIFICACAO>'
Texto += '</NFSE>'
Texto += '</wsdlns:Webxml>'
Texto += '</wsdlns:Nfse.Execute>'
Texto += '</SOAP-ENV:Body>'
Texto += '</SOAP-ENV:Envelope>'
xmldom:LoadXML(Texto)
IF xmldom:parseError:errorCode = 0
? "XML Carregado"
ELSE
lcErrorMsg = "Não foi possível carregar o documento pois ele não corresponde ao seu Schema"
lcErrorMsg = lcErrorMsg + " Linha: " + STR(xmldom:parseError:line)
lcErrorMsg = lcErrorMsg + " Caractere na linha: " + STR(xmldom:parseError:linepos)
lcErrorMsg = lcErrorMsg + " Causa do erro: " + xmldom:parseError:reason;
+"code: "+STR(xmldom:parseError:errorCode)
? lcErrorMsg
ENDIF
? "text "+xmldom:text
? "XML1 "+xmldom:xml
xmldoc:send(xmldom:xml)
?
do while xmldoc:readyState <> 4
?? ALLTRIM(STR(xmldoc:readyState))
millisec(50)
enddo
? "Resposta"
? "TEXT "+xmldoc:responseText
? "XML "+ xmldoc:responseXML:xml
[]s
Fernando Athayde


