Implementar NFSe para Brasília - DF padrão 2.04

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

Ao consutar as notas emitidas utilizando o ConsultarNfseServicoPrestadoEnvio e informando o periodo de emissao (data inicial e final) eu consigo obter normalmente os Xml referente ao periodo. Minha dúvida é a seguinte, nos xml recebidos nao tem nada que diferencie as notas canceladas com as notas nao canceladas. Alguem sabe me dizer como posso identificar se a nota foi cancelada ou nao, pelo seu xml retornado?