BAIXAR XML DA NFE NA ACEFAZ

JEANSILVAFRAZAO 01/02/2025 11:44:44
#503800
Bom dia estou tentando fazer um projeto aqui no meu sistema pra fazer Donwload do xml da nfe na cefaz, mas estou encontrando uns probles
tipo ta dando um erro aqui nesta linha..... handler.ClientCertificates.Add(certificado)
codigo..

Imports System.Net.Http
Imports System.Security.Cryptography.X509Certificates
Imports System.Text
Imports System.Threading.Tasks
Imports System.Net

Public Class frmBaixarNotas
Private Async Function DownloadXmlNfeAsync(chaveAcesso As String) As Task(Of String)
' URL do Web Service de Consulta da NF-e (ambiente nacional de homologação)
Dim url As String = "https://hom.nfe.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx"

' Monta o corpo da requisição SOAP
Dim soapRequest As String = "" &
"" &
"" &
"" &
"" &
"" &
"2" &
"CONSULTAR" &
"" & chaveAcesso & "" &
"" &
"" &
"" &
"" &
""

' Configura o handler com o certificado digital
Dim handler As New HttpClientHandler()

' Carrega o certificado de teste a partir do arquivo .pfx
Dim caminhoCertificado As String = "C:\Certificados\certificado_teste.pfx"
Dim senhaCertificado As String = "123456"
Dim certificado As New X509Certificate2(caminhoCertificado, senhaCertificado)

handler.ClientCertificates.Add(certificado)

Using httpClient As New HttpClient(handler)
Try
' Configura o conteúdo da requisição
Dim content As New StringContent(soapRequest, Encoding.UTF8, "application/soap+xml")

' Aumenta o timeout da requisição
httpClient.Timeout = TimeSpan.FromSeconds(30)

' Faz a requisição POST ao Web Service
Dim response As HttpResponseMessage = Await httpClient.PostAsync(url, content)

' Verifica se a requisição foi bem-sucedida
If response.IsSuccessStatusCode Then
' Lê o conteúdo da resposta
Dim xmlResponse As String = Await response.Content.ReadAsStringAsync()
Return xmlResponse
Else
MessageBox.Show("Erro ao consultar a NF-e: " & response.StatusCode.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return Nothing
End If
Catch ex As Exception
MessageBox.Show("Erro: " & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return Nothing
End Try
End Using
End Function

Private Async Sub btnConsultar_Click(sender As Object, e As EventArgs) Handles btnConsulta.Click
Dim chaveAcesso As String = txtChaveAcesso.Text.Trim()

If String.IsNullOrEmpty(chaveAcesso) Then
MessageBox.Show("Por favor, insira a chave de acesso da NF-e.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If

' Consulta o XML da NF-e
Dim xmlResponse As String = Await DownloadXmlNfeAsync(chaveAcesso)

If Not String.IsNullOrEmpty(xmlResponse) Then
txtVisualizarXml.Text = xmlResponse
MessageBox.Show("XML da NF-e consultado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
txtVisualizarXml.Clear()
End If
End Sub
End Class
Faça seu login para responder