Na tentativa de fazer a comunicação
-
Através de incluir o WebService via Add Web Reference me retornava o erro “URI inválido: não foi possível determinar o formato do URI.”
-
Através de incluir o WebService via Service Reference me retornava o erro “O esquema de URI do provedor ‘https’ é inválido; esperado ‘http’.” & vbCrLf & “Nome do parâmetro: via”.
A Nota Control não soube me dizer o porquê destes erros. Então fiz o código abaixo e funcionou! Segue:
Bloco de Citação
lstrCabecalho = “<cabecalho xmlns=” & Chr(34) & “http://www.abrasf.org.br/nfse.xsd” & Chr(34) & " versao=" & Chr(34) & “1.00” & Chr(34) & “>”
lstrCabecalho = lstrCabecalho & “2.04”
lstrCabecalho = lstrCabecalho & “”
lstrXMLSoap = "<soapenv:Envelope xmlns:soapenv=" & Chr(34) & "http://schemas.xmlsoap.org/soap/envelope/" & Chr(34) & " xmlns:nfse=" & Chr(34) & "http://nfse.abrasf.org.br" & Chr(34) & "> "
lstrXMLSoap = lstrXMLSoap & "<soapenv:Header/>"
lstrXMLSoap = lstrXMLSoap & "<soapenv:Body>"
lstrXMLSoap = lstrXMLSoap & "<nfse:RecepcionarLoteRpsSincrono>"
lstrXMLSoap = lstrXMLSoap & "<nfseCabecMsg>"
lstrXMLSoap = lstrXMLSoap & lstrCabecalho
lstrXMLSoap = lstrXMLSoap & "</nfseCabecMsg>"
lstrXMLSoap = lstrXMLSoap & "<nfseDadosMsg>"
lstrXMLSoap = lstrXMLSoap & mstrArquivoXML
lstrXMLSoap = lstrXMLSoap & "</nfseDadosMsg>"
lstrXMLSoap = lstrXMLSoap & "</nfse:RecepcionarLoteRpsSincrono>"
lstrXMLSoap = lstrXMLSoap & "</soapenv:Body></soapenv:Envelope>"
Dim lobjWebRequest As HttpWebRequest
Dim lobjSoapEnvelopeXml As New XmlDocument
lobjWebRequest = WebRequest.Create("https://df.issnetonline.com.br/webservicenfse204/nfse.asmx")
lobjWebRequest.Headers.Add("SOAP:Action")
lobjWebRequest.ContentType = "text/xml;charset=" & Chr(34) & "utf-8" & Chr(34)
lobjWebRequest.Accept = "text/xml"
lobjWebRequest.Method = "POST"
lobjWebRequest.ClientCertificates.Add(objCertificado)
lobjSoapEnvelopeXml.LoadXml(lstrXMLSoap)
Using lobjStream As IO.Stream = lobjWebRequest.GetRequestStream()
lobjSoapEnvelopeXml.Save(lobjStream)
End Using
Using lobjResponse As WebResponse = lobjWebRequest.GetResponse()
Using lobjStreamReader As IO.StreamReader = New IO.StreamReader(lobjResponse.GetResponseStream())
lstrArquivoRetornoXML = lobjStreamReader.ReadToEnd()
End Using
End Using