none
StatusServico NFe RRS feed

  • Pergunta

  • Boa tarde amigos programadores!

    Estou com um problema que nao consigo sanar de jeito nenhum, a empresa em que eu entrei usa Dll´s pagas para consumir os webservices de nota fiscal eletronica, porém me vi na obrigação de fazer um projeto próprio para a empresa e com isso comecei a programar. A primeira coisa que fiz foi fazer um teste em Status do Serviço na WS SVRS, pois peguei um certificado digital de um cliente nosso do estado de Sergipe que faz parte dessa ws. Fiz todos os procedimentos para acessar o webservice, usei httpWebRequest, porém sempre me dá um erro 500 interno do servidor. Ja olhei em outros fórums e falaram que pode ser problema na comunicacao do certificado, mas se eu for pelo browser direto dá certinho. Segue abaixo meu codigo: 

    OBS: meus dados estao fixos para somente fazer teste

    try
                { 
                X509Certificate2 cert = certificados();
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx");
                webRequest.Headers.Add(@"SOAPAction: ""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2""");
                webRequest.ContentType = "text/xml;charset=utf-8";
                webRequest.Method = "POST";
                
                
                webRequest.ClientCertificates.Add(cert);
    
    
                XmlDocument soapEnvelopeXml = new XmlDocument();
                    soapEnvelopeXml.LoadXml(@"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""><soap:Header><nfeCabecMsg xmlns=""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2""><cUF>28</cUF><versaoDados>3.10</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeDadosMsg xmlns=""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2""><consStatServ xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10""><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></soap:Body></soap:Envelope>");
    
    
                    StreamWriter es = new StreamWriter("d:\\xml.xml");
                    using(es)
                    {
                        es.Write(soapEnvelopeXml.InnerXml);
                    }
                    using (Stream stream = webRequest.GetRequestStream())
                    {
                        using (StreamWriter stmw = new StreamWriter(stream))
                        {
                            stmw.Write(soapEnvelopeXml);
                        }
                        //soapEnvelopeXml.Save(stream);
                    }
    
                    using (WebResponse response = webRequest.GetResponse())
                    {
                        using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                        {
                            string soapResult = rd.ReadToEnd();
                            MessageBox.Show(soapResult);
                        }
                    }
                }
               catch(WebException ex)
                {
                    MessageBox.Show(((HttpWebResponse)ex.Response).StatusDescription);
               }
    segunda-feira, 2 de outubro de 2017 18:56

Todas as Respostas

  • Qual a descrição do erro? Só retorna o código do erro?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 3 de outubro de 2017 11:08
  • Isso Juliano, somente erro interno. O Codigo esta correto?

    terça-feira, 3 de outubro de 2017 16:58
  • Não conheço este WebService mas faça um teste utilizando a versão gratuita do SoapUI para a requisição. Assim você poderá identificar se o erro está no seu código ou algum dos parâmetros que você passa.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 3 de outubro de 2017 17:29
  • Correto, vou fazer aqui!!

    Ele retorna todo o erro? ate se for no certificado?

    terça-feira, 3 de outubro de 2017 17:52
  • Não é garantido, mas pode te dar mais detalhes.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 3 de outubro de 2017 18:00
  • Boa tarde Juliano, estou em panico, nem assim consegui saber o erro 

    Ele da a mensagem  WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'. quando puxo a WSDL

    terça-feira, 3 de outubro de 2017 18:03
  • Juliano, cometi uma gafe, tinha esquecido de adicionar o certificado no soapui, agora vou testar pra ver se da certo
    terça-feira, 3 de outubro de 2017 18:09
  • Juliano, deu certo a requisicao do soapui, nao deu erro: adicionei o certificado da minha maquina e fiz a requisicao:

    O SOAPUI meu deu esse soap de requisicao:

    POST https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: text/xml;charset=UTF-8
    SOAPAction: "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2"
    Content-Length: 641
    Host: nfe-homologacao.svrs.rs.gov.br
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nfes="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
       <soapenv:Header>
          <nfes:nfeCabecMsg>
             <!--Optional:-->
             <nfes:cUF>28</nfes:cUF>
             <!--Optional:-->
             <nfes:versaoDados>3.10</nfes:versaoDados>
          </nfes:nfeCabecMsg>
       </soapenv:Header>
       <soapenv:Body>
          <nfes:nfeDadosMsg>
            <consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ>
          </nfes:nfeDadosMsg>
       </soapenv:Body>
    </soapenv:Envelope>

    Ai mudei meu codigo do c# para isso:

    X509Certificate2 cert = certificados();
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx");
                webRequest.Headers.Add(@"SOAP:Action");//""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2""");
                webRequest.ContentType = "text/xml;charset=UTF-8";
                webRequest.Method = "POST";
                webRequest.UserAgent = "Apache-HttpClient/4.1.1";
                //webRequest.ContentLength = 641;
    
    
                webRequest.ClientCertificates.Add(cert);
    
    
                XmlDocument soapEnvelopeXml = new XmlDocument();
                soapEnvelopeXml.LoadXml(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:nfes=""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2""><soapenv:Header><nfes:nfeCabecMsg><nfes:cUF>28</nfes:cUF><nfes:versaoDados>3.10</nfes:versaoDados></nfes:nfeCabecMsg></soapenv:Header><soapenv:Body><nfes:nfeDadosMsg><consStatServ xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10""><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ></nfes:nfeDadosMsg></soapenv:Body></soapenv:Envelope>");
    
    
                StreamWriter es = new StreamWriter("d:\\xml.xml");
                using (es)
                {
                    es.Write(soapEnvelopeXml.InnerXml);
                }
                using (Stream stream = webRequest.GetRequestStream())
                {
                    using (StreamWriter stmw = new StreamWriter(stream))
                    {
                        stmw.Write(soapEnvelopeXml);
                    }
                    //soapEnvelopeXml.Save(stream);
                }
    
                using (WebResponse response = webRequest.GetResponse())
                {
                    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                    {
                        string soapResult = rd.ReadToEnd();
                        MessageBox.Show(soapResult);
                    }
                }
    Tem algo que eu errei no meu codigo do c#?? no SOAPUI passou certinho

    terça-feira, 3 de outubro de 2017 18:37
  • uliano, deu certo a requisicao do soapui, nao deu erro: adicionei o certificado da minha maquina e fiz a requisicao:

    O SOAPUI meu deu esse soap de requisicao:

    POST https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: text/xml;charset=UTF-8
    SOAPAction: "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2"
    Content-Length: 641
    Host: nfe-homologacao.svrs.rs.gov.br
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nfes="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
       <soapenv:Header>
          <nfes:nfeCabecMsg>
             <!--Optional:-->
             <nfes:cUF>28</nfes:cUF>
             <!--Optional:-->
             <nfes:versaoDados>3.10</nfes:versaoDados>
          </nfes:nfeCabecMsg>
       </soapenv:Header>
       <soapenv:Body>
          <nfes:nfeDadosMsg>
            <consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ>
          </nfes:nfeDadosMsg>
       </soapenv:Body>
    </soapenv:Envelope>

    Ai mudei meu codigo do c# para isso:

    X509Certificate2 cert = certificados();
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx");
                webRequest.Headers.Add(@"SOAP:Action");//""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2""");
                webRequest.ContentType = "text/xml;charset=UTF-8";
                webRequest.Method = "POST";
                webRequest.UserAgent = "Apache-HttpClient/4.1.1";
                //webRequest.ContentLength = 641;
    
    
                webRequest.ClientCertificates.Add(cert);
    
    
                XmlDocument soapEnvelopeXml = new XmlDocument();
                soapEnvelopeXml.LoadXml(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:nfes=""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2""><soapenv:Header><nfes:nfeCabecMsg><nfes:cUF>28</nfes:cUF><nfes:versaoDados>3.10</nfes:versaoDados></nfes:nfeCabecMsg></soapenv:Header><soapenv:Body><nfes:nfeDadosMsg><consStatServ xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10""><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ></nfes:nfeDadosMsg></soapenv:Body></soapenv:Envelope>");
    
    
                StreamWriter es = new StreamWriter("d:\\xml.xml");
                using (es)
                {
                    es.Write(soapEnvelopeXml.InnerXml);
                }
                using (Stream stream = webRequest.GetRequestStream())
                {
                    using (StreamWriter stmw = new StreamWriter(stream))
                    {
                        stmw.Write(soapEnvelopeXml);
                    }
                    //soapEnvelopeXml.Save(stream);
                }
    
                using (WebResponse response = webRequest.GetResponse())
                {
                    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                    {
                        string soapResult = rd.ReadToEnd();
                        MessageBox.Show(soapResult);
                    }
                }
    Tem algo que eu errei no meu codigo do c#?? no SOAPUI passou certinho
    terça-feira, 3 de outubro de 2017 18:37
  • Rafael,

    Tente assim:

    X509Certificate2 cert = certificados();
    		
    		HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx");
    		
    		webRequest.Headers.Add("SOAPAction", "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2");
    		webRequest.ContentType = "text/xml;charset=UTF-8";
    		webRequest.Method = "POST";
    		webRequest.ClientCertificates.Add(cert);
    		
    		var soapEnvelope = @"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:nfes=""http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2""><soapenv:Header><nfes:nfeCabecMsg><nfes:cUF>28</nfes:cUF><nfes:versaoDados>3.10</nfes:versaoDados></nfes:nfeCabecMsg></soapenv:Header><soapenv:Body><nfes:nfeDadosMsg><consStatServ xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""3.10""><tpAmb>2</tpAmb><cUF>28</cUF><xServ>STATUS</xServ></consStatServ></nfes:nfeDadosMsg></soapenv:Body></soapenv:Envelope>";
    		
    		
    
    		using (Stream stream = webRequest.GetRequestStream())
    		{
    			using (StreamWriter stmw = new StreamWriter(stream))
    			{
    				stmw.Write(soapEnvelope);
    				stmw.Close();
    			}
    		}
    
    		using (WebResponse response = webRequest.GetResponse())
    		{
    			using (StreamReader rd = new StreamReader(response.GetResponseStream()))
    			{
    				string soapResult = rd.ReadToEnd();
    				rd.Close();
    				MessageBox.Show(soapResult);
    			}
    		}


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quarta-feira, 4 de outubro de 2017 11:18
  • O problema já foi resolvido? Caso sim, lembre-se de marcar a resposta como aceita.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 17 de outubro de 2017 09:42