none
Consumir Web services NFS-e Prefeitura de SP - DICA RRS feed

  • Discussão Geral

  • Boa tarde Pessoal, quero compartilhar com vocês a resolução de um problema pelo qual passei e resolvi hoje.

    Ao tentar adicionar um web reference (https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx)no VS2010,

    me pedia o certificado digital, eu apontava o certificado, tudo ok, mas dava um erro de HTTP 403: Forbidden , não conseguia referenciar e assim criar a classe para utilizar os métodos do webservice.

    Li o post http://social.msdn.microsoft.com/Forums/pt-BR/webservicespt/thread/ecd6123e-8bf8-417b-aa54-0cd0bf3d5b9a e mesmo assim não adiantou para mim.

    Li em outra thread que um cara setou a versão do .NET 3.5 para .NET 2.0 e conseguiu adicionar a referência. Fiz o mesmo e consegui. Porém fiz o mesmo processo em outra aplicação minha e voltaram os mesmo erros.

    Resolvi o problema criando a classe não mão , claro copiei e alterei com base á classe criada do outro projeto que consegui adicionar a web referencia.

    Depois adicionei uma setting na properties do  projeto assim:

    Name: nome da propriedade (vai ser referenciada na classe da NFse)

    type:web service URL

    Scope: Application

    Value https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx

    Adicionei a referencia : .NET/System.Web.Services

    pastebin da classehttp://pastebin.com/3sH59jmF

    pastebin do code do form que eu testei o consumo : http://pastebin.com/bRP1rt4K

    quem quiser baixar o projeto , aqui :http://sdrv.ms/SzhSk9

    Abraços.

    sexta-feira, 5 de outubro de 2012 19:04

Todas as Respostas

  • Maravilha o seu codigo, me ajudou muito a entender como funciona a dinamica com esse serviço, valeu!
    terça-feira, 30 de outubro de 2012 19:11
  • Obrigado pelo exemplo, estou tendo o mesmo problema para criar um web reference. fiz download de seu projeto para testar mas ainda estou tendo um problema com http 403 forbidden durante o envio.

    MessageBox.Show(n.EnvioRPS(1, ""));

    Estou usando um certificado tipo A3, vejo que em seu projeto você acessa os certificados gravados na maquina.

    copiei a mensagem de erro aqui caso ajude em algo.

    System.Net.WebException was unhandled
      Message=The request failed with HTTP status 403: Forbidden.
      Source=System.Web.Services
      StackTrace:
           at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
           at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
           at TesteWS.LoteNFe.TesteEnvioLoteRPS(Int32 VersaoSchema, String MensagemXML) in C:\Users\eduardo.fortes\Downloads\skydrive-2013-07-22\TesteWS\TesteWS\TesteWS\LoteNFe.cs:line 200
           at TesteWS.Form1.button1_Click(Object sender, EventArgs e) in C:\Users\eduardo.fortes\Downloads\skydrive-2013-07-22\TesteWS\TesteWS\TesteWS\Form1.cs:line 27
           at System.Windows.Forms.Control.OnClick(EventArgs e)
           at System.Windows.Forms.Button.OnClick(EventArgs e)
           at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           at System.Windows.Forms.Control.WndProc(Message& m)
           at System.Windows.Forms.ButtonBase.WndProc(Message& m)
           at System.Windows.Forms.Button.WndProc(Message& m)
           at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
           at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           at System.Windows.Forms.Application.Run(Form mainForm)
           at TesteWS.Program.Main() in C:\Users\eduardo.fortes\Downloads\skydrive-2013-07-22\TesteWS\TesteWS\TesteWS\Program.cs:line 18
           at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           at System.Threading.ThreadHelper.ThreadStart()
      InnerException: 

    segunda-feira, 22 de julho de 2013 15:51
  • Cara eu estava tendo o mesmo problema a solução foi antes de fazer

    MessageBox.Show(n.EnvioRPS(1, ""));

    vc deve adicionar o certificado digital na chamada do método.

     

    o meu esta assim :

                    X509Certificate2 cert = new X509Certificate2();
                    Certificado certificado = new Certificado();
                    cert = certificado.BuscaNome("");
                    Rps.ClientCertificates.Add(cert);
                    MessageBox.Show(Rps.TesteEnvioLoteRPS(1, XmlNota)); 

    segunda-feira, 28 de outubro de 2013 16:41
  • Boa tarde Hugo,

    Muito bom seu Artigo,

    Vc Poderia mostrar como posso  mandar o XML(lote) para prefeitura?

    obrigado!

    segunda-feira, 17 de março de 2014 21:04
  • Cara estou procurando em varios foruns qual o tempo medio de consumo no lote de50 rps e não encontrei ainda... vc consegue me passar essa informação?

    vlw

    quarta-feira, 7 de outubro de 2015 19:19
  • Boa Tarde Hugo, gostaria de saber se pode me ajudar, baixei seu exemplo de consulta no webservice da Prf SP, porem não estou conseguindo fazer a pesquisa, baixei os schema e os exemplos da propria prefeitura mas nao vai.

    Criei o modelo da MensagemXML com base no exemplo simples de consulta de cnpj e acusa o seguinte erro Versao do XML Incorreto .

    estou usando o seguinte parametro:

    MessageBox.Show(n.ConsultaCNPJ(02,"<?xml version=\"1.0\" encoding=\"UTF-8\"?> <p1:PedidoConsultaCNPJ xmlns:p1=\"http://www.prefeitura.sp.gov.br/nfe\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <Cabecalho Versao=\"1\"> <CPFCNPJRemetente> <CNPJ>0294527200190</CNPJ> </CPFCNPJRemetente> </Cabecalho> <CNPJContribuinte> <CNPJ>04071190000199</CNPJ> </CNPJContribuinte> </p1:PedidoConsultaCNPJ>"));

    Resolvi utilizar esse mas na verdade preciso usar a baixa de notas recebidas que nao funciona

    Valeu


    Marcos

    sexta-feira, 15 de janeiro de 2016 18:16
  • Olá amigo, estou começando agora na NFSe e estou tendo a mesma crítica de versão. Você conseguiu resolver ?
    terça-feira, 30 de agosto de 2016 15:06
  • Identifiquei o erro, essa mensagem ocorre porque na chamada do método (usando wsdl importado para c#) estava passa uma versão diferente da do XML.
    terça-feira, 30 de agosto de 2016 15:27
  • Oi Hugo

    Não esta mais disponível, será que existe a possibilidade de disponibilizar novamente?

    terça-feira, 15 de agosto de 2017 21:54
  • Boa tarde, é possível disponibilizar o projeto novamente?

    Fabíola Lopes frlopes@gmail.com

    quarta-feira, 19 de fevereiro de 2020 16:56