Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrejrocha

[Resolvido] WebService - Nota Paulista

Recommended Posts

Bom dia,

 

Estou com uma dúvida sobre o acesso a WebService da Nota Fiscal Paulista.

 

https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx?WSDL

 

Sou programador em Delphi e tive alguns problemas em fazer, com isso, testei no Visual Studio 2005 e obtive um êxito melhor com relação ao Adicionar uma "web Reference". Porém, não conheço nada de VB.NET e é onde estou tentando.

 

Até as dúvidas ficam limitadas por não conhecer muito, porém, vou tentar explicar o problema.

 

Adcionei uma referencia "ADD WEB REFERENCE" e me criou uma instancia com todas funções do WebService.

 

Sobre esta função, criei o código abaixo :

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		' Desabilita botão

		Button1.Enabled = False
		Try
			TextBox6.Clear()

			' Cria objeto para chamar WebService
			Dim WS As New br.gov.sp.fazenda.nfp.www.ArquivoCF
			Dim WSHeader As New br.gov.sp.fazenda.nfp.www.Autenticacao

			If CheckBox1.Checked Then

				Dim nc As New System.Net.NetworkCredential()
				' TextBox que contém o dominio da Proxy Local
				nc.Domain = TextBox9.Text
				' Usuario da Proxy
				nc.UserName = TextBox8.Text
				' Senha do Usuario
				nc.Password = TextBox7.Text

				WS.Credentials = nc
			End If

			' Parametros de envio do Cabeçalho do WebService - Função montada ao adicionar referencia
			WSHeader.CNPJ = TextBox4.Text
			WSHeader.Usuario = TextBox2.Text
			WSHeader.Senha = TextBox3.Text
			WSHeader.CategoriaUsuario = 1

			' WS.CONSULTAR, função do WEBSERVICE, Obriga apenas o envio do No. do Protocolo
			TextBox6.Text = WS.Consultar(TextBox1.Text)

		Finally
			' Habilita botão
			Button1.Enabled = True
		End Try
	End Sub
-- > O ERRO

 

Ao executar esta função...o retorno dela é :

"Object reference not set to an instance of an object."

 

Dentro do Visual Studio ao executar passo a passo, aparece o seguinte erro :

 

"Unable to automatically step into the server. Connecting to the server machine 'www.nfp.fazenda.sp.gov.br' failed. The debugger cannot connect to the remote computer. This may be because the remote computer does not exist or a firewall may be preventing communication to the remote computer. Please see hel for assistance"

 

 

Se alguem puder dar uma luz e a possível causa para eu pesquisar... Agradeço.

 

Ps : Abri o visual studio pela primeira vez a 2 dias atrás, então, não conheço a ferramenta e pode ser algo bem banal para todos. Agradeço.

 

 

Andre

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro: Object reference not set to an instance of an object normalmente é por que esta tentando utilizar algum objeto que não foi instanciado. Poste a linha do código que deu o erro para ficar mais fácil o auxílio.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro quintelab, desde já agradeço.

 

Então, não apresenta erro, compila normalmente e quando executo, a resposta da função consulta é esta :

 

http://www.redepaulistao.com.br/tela/tela.jpg

 

E se executo no Visual Studio e no Debug, apresenta esta tela.

 

http://www.redepaulistao.com.br/tela/erro_studio.jpg

 

Agora a linha exata é

 

' WS.CONSULTAR, função do WEBSERVICE, Obriga apenas o envio do No. do Protocolo

TextBox6.Text = WS.Consultar(TextBox1.Text)

 

 

Quando fiz a instancia "Add Web Reference" foi criada estas funções. Vou colar abaixo :

 

'------------------------------------------------------------------------------
' <auto-generated>
'	 This code was generated by a tool.
'	 Runtime Version:2.0.50727.42
'
'	 Changes to this file may cause incorrect behavior and will be lost if
'	 the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On

Imports System
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization

'
'This source code was auto-generated by Microsoft.VSDesigner, Version 2.0.50727.42.
'
Namespace br.gov.sp.fazenda.nfp.www
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42"),  _
	 System.Diagnostics.DebuggerStepThroughAttribute(),  _
	 System.ComponentModel.DesignerCategoryAttribute("code"),  _
	 System.Web.Services.WebServiceBindingAttribute(Name:="ArquivoCFSoap12", [Namespace]:="https://www.nfp.sp.gov.br/ws")>  _
	Partial Public Class ArquivoCF
		Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
		
		Private autenticacaoValueField As Autenticacao
		
		Private EnviarOperationCompleted As System.Threading.SendOrPostCallback
		
		Private ConsultarOperationCompleted As System.Threading.SendOrPostCallback
		
		Private useDefaultCredentialsSetExplicitly As Boolean
		
		'''<remarks/>
		Public Sub New()
			MyBase.New
			Me.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12
			Me.Url = Global.notafiscal.My.MySettings.Default.notafiscal_br_gov_sp_fazenda_nfp_www_Arq
uivoCF
			If (Me.IsLocalFileSystemWebService(Me.Url) = true) Then
				Me.UseDefaultCredentials = true
				Me.useDefaultCredentialsSetExplicitly = false
			Else
				Me.useDefaultCredentialsSetExplicitly = true
			End If
		End Sub
		
		Public Property AutenticacaoValue() As Autenticacao
			Get
				Return Me.autenticacaoValueField
			End Get
			Set
				Me.autenticacaoValueField = value
			End Set
		End Property
		
		Public Shadows Property Url() As String
			Get
				Return MyBase.Url
			End Get
			Set
				If (((Me.IsLocalFileSystemWebService(MyBase.Url) = true)  _
							AndAlso (Me.useDefaultCredentialsSetExplicitly = false))  _
							AndAlso (Me.IsLocalFileSystemWebService(value) = false)) Then
					MyBase.UseDefaultCredentials = false
				End If
				MyBase.Url = value
			End Set
		End Property
		
		Public Shadows Property UseDefaultCredentials() As Boolean
			Get
				Return MyBase.UseDefaultCredentials
			End Get
			Set
				MyBase.UseDefaultCredentials = value
				Me.useDefaultCredentialsSetExplicitly = true
			End Set
		End Property
		
		'''<remarks/>
		Public Event EnviarCompleted As EnviarCompletedEventHandler
		
		'''<remarks/>
		Public Event ConsultarCompleted As ConsultarCompletedEventHandler
		
		'''<remarks/>
		<System.Web.Services.Protocols.SoapHeaderAttribute("AutenticacaoValue"),  _
		 System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.nfp.sp.gov.br/ws/Enviar", RequestNamespace:="https://www.nfp.sp.gov.br/ws", ResponseNamespace:="https://www.nfp.sp.gov.br/ws", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
		Public Function Enviar(ByVal NomeArquivo As String, ByVal ConteudoArquivo As String, ByVal EnvioNormal As Boolean, ByVal Observacoes As String) As String
			Dim results() As Object = Me.Invoke("Enviar", New Object() {NomeArquivo, ConteudoArquivo, EnvioNormal, Observacoes})
			Return CType(results(0),String)
		End Function
		
		'''<remarks/>
		Public Overloads Sub EnviarAsync(ByVal NomeArquivo As String, ByVal ConteudoArquivo As String, ByVal EnvioNormal As Boolean, ByVal Observacoes As String)
			Me.EnviarAsync(NomeArquivo, ConteudoArquivo, EnvioNormal, Observacoes, Nothing)
		End Sub
		
		'''<remarks/>
		Public Overloads Sub EnviarAsync(ByVal NomeArquivo As String, ByVal ConteudoArquivo As String, ByVal EnvioNormal As Boolean, ByVal Observacoes As String, ByVal userState As Object)
			If (Me.EnviarOperationCompleted Is Nothing) Then
				Me.EnviarOperationCompleted = AddressOf Me.OnEnviarOperationCompleted
			End If
			Me.InvokeAsync("Enviar", New Object() {NomeArquivo, ConteudoArquivo, EnvioNormal, Observacoes}, Me.EnviarOperationCompleted, userState)
		End Sub
		
		Private Sub OnEnviarOperationCompleted(ByVal arg As Object)
			If (Not (Me.EnviarCompletedEvent) Is Nothing) Then
				Dim invokeArgs As System.Web.Services.Protocols.InvokeCompletedEventArgs = CType(arg,System.Web.Services.Protocols.InvokeCompletedEventArgs)
				RaiseEvent EnviarCompleted(Me, New EnviarCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState))
			End If
		End Sub
		
		'''<remarks/>
		<System.Web.Services.Protocols.SoapHeaderAttribute("AutenticacaoValue"),  _
		 System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.nfp.sp.gov.br/ws/Consultar", RequestNamespace:="https://www.nfp.sp.gov.br/ws", ResponseNamespace:="https://www.nfp.sp.gov.br/ws", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
		Public Function Consultar(ByVal Protocolo As String) As String
			Dim results() As Object = Me.Invoke("Consultar", New Object() {Protocolo})
			Return CType(results(0),String)
		End Function
		
		'''<remarks/>
		Public Overloads Sub ConsultarAsync(ByVal Protocolo As String)
			Me.ConsultarAsync(Protocolo, Nothing)
		End Sub
		
		'''<remarks/>
		Public Overloads Sub ConsultarAsync(ByVal Protocolo As String, ByVal userState As Object)
			If (Me.ConsultarOperationCompleted Is Nothing) Then
				Me.ConsultarOperationCompleted = AddressOf Me.OnConsultarOperationCompleted
			End If
			Me.InvokeAsync("Consultar", New Object() {Protocolo}, Me.ConsultarOperationCompleted, userState)
		End Sub
		
		Private Sub OnConsultarOperationCompleted(ByVal arg As Object)
			If (Not (Me.ConsultarCompletedEvent) Is Nothing) Then
				Dim invokeArgs As System.Web.Services.Protocols.InvokeCompletedEventArgs = CType(arg,System.Web.Services.Protocols.InvokeCompletedEventArgs)
				RaiseEvent ConsultarCompleted(Me, New ConsultarCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState))
			End If
		End Sub
		
		'''<remarks/>
		Public Shadows Sub CancelAsync(ByVal userState As Object)
			MyBase.CancelAsync(userState)
		End Sub
		
		Private Function IsLocalFileSystemWebService(ByVal url As String) As Boolean
			If ((url Is Nothing)  _
						OrElse (url Is String.Empty)) Then
				Return false
			End If
			Dim wsUri As System.Uri = New System.Uri(url)
			If ((wsUri.Port >= 1024)  _
						AndAlso (String.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) = 0)) Then
				Return true
			End If
			Return false
		End Function
	End Class
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.42"),  _
	 System.SerializableAttribute(),  _
	 System.Diagnostics.DebuggerStepThroughAttribute(),  _
	 System.ComponentModel.DesignerCategoryAttribute("code"),  _
	 System.Xml.Serialization.XmlTypeAttribute([Namespace]:="https://www.nfp.sp.gov.br/ws"),  _
	 System.Xml.Serialization.XmlRootAttribute([Namespace]:="https://www.nfp.sp.gov.br/ws", IsNullable:=false)>  _
	Partial Public Class Autenticacao
		Inherits System.Web.Services.Protocols.SoapHeader
		
		Private usuarioField As String
		
		Private senhaField As String
		
		Private cNPJField As String
		
		Private categoriaUsuarioField As Byte
		
		Private anyAttrField() As System.Xml.XmlAttribute
		
		'''<remarks/>
		<System.Xml.Serialization.XmlAttributeAttribute()>  _
		Public Property Usuario() As String
			Get
				Return Me.usuarioField
			End Get
			Set
				Me.usuarioField = value
			End Set
		End Property
		
		'''<remarks/>
		<System.Xml.Serialization.XmlAttributeAttribute()>  _
		Public Property Senha() As String
			Get
				Return Me.senhaField
			End Get
			Set
				Me.senhaField = value
			End Set
		End Property
		
		'''<remarks/>
		<System.Xml.Serialization.XmlAttributeAttribute()>  _
		Public Property CNPJ() As String
			Get
				Return Me.cNPJField
			End Get
			Set
				Me.cNPJField = value
			End Set
		End Property
		
		'''<remarks/>
		<System.Xml.Serialization.XmlAttributeAttribute()>  _
		Public Property CategoriaUsuario() As Byte
			Get
				Return Me.categoriaUsuarioField
			End Get
			Set
				Me.categoriaUsuarioField = value
			End Set
		End Property
		
		'''<remarks/>
		<System.Xml.Serialization.XmlAnyAttributeAttribute()>  _
		Public Property AnyAttr() As System.Xml.XmlAttribute()
			Get
				Return Me.anyAttrField
			End Get
			Set
				Me.anyAttrField = value
			End Set
		End Property
	End Class
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42")>  _
	Public Delegate Sub EnviarCompletedEventHandler(ByVal sender As Object, ByVal e As EnviarCompletedEventArgs)
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42"),  _
	 System.Diagnostics.DebuggerStepThroughAttribute(),  _
	 System.ComponentModel.DesignerCategoryAttribute("code")>  _
	Partial Public Class EnviarCompletedEventArgs
		Inherits System.ComponentModel.AsyncCompletedEventArgs
		
		Private results() As Object
		
		Friend Sub New(ByVal results() As Object, ByVal exception As System.Exception, ByVal cancelled As Boolean, ByVal userState As Object)
			MyBase.New(exception, cancelled, userState)
			Me.results = results
		End Sub
		
		'''<remarks/>
		Public ReadOnly Property Result() As String
			Get
				Me.RaiseExceptionIfNecessary
				Return CType(Me.results(0),String)
			End Get
		End Property
	End Class
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42")>  _
	Public Delegate Sub ConsultarCompletedEventHandler(ByVal sender As Object, ByVal e As ConsultarCompletedEventArgs)
	
	'''<remarks/>
	<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42"),  _
	 System.Diagnostics.DebuggerStepThroughAttribute(),  _
	 System.ComponentModel.DesignerCategoryAttribute("code")>  _
	Partial Public Class ConsultarCompletedEventArgs
		Inherits System.ComponentModel.AsyncCompletedEventArgs
		
		Private results() As Object
		
		Friend Sub New(ByVal results() As Object, ByVal exception As System.Exception, ByVal cancelled As Boolean, ByVal userState As Object)
			MyBase.New(exception, cancelled, userState)
			Me.results = results
		End Sub
		
		'''<remarks/>
		Public ReadOnly Property Result() As String
			Get
				Me.RaiseExceptionIfNecessary
				Return CType(Me.results(0),String)
			End Get
		End Property
	End Class
End Namespace

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado novamente pela ajuda Bruno....

 

Estou de pleno acordo com você, tambem acho que seja o meu PROXY me bloqueando, contudo, tenho que provar isso ao pessoal de redes... vida dificil....

 

Por isso, estou esgotando as possibilidades.... como tem 3 dias que estou mexendo com visual studio e só utilizava delphi e php, então, para mim é tudo novidade a maneira do visual studio, nunca tinha utilizado esta ferramenta.

 

Assim, não sou hábil para mexer nisso ainda e poderia estar cometendo um erro básico em algum lugar.

 

Pensando em proxy, para tentar utilizar outro usuário, tentei mudar o usuario da proxy em tempo de execução. Está correto esta maneira?

No codigo completo abaixo, a minha tentativa corresponde em :

If CheckBox1.Checked Then

				Dim nc As New System.Net.NetworkCredential()
				' TextBox que contém o dominio da Proxy Local
				nc.Domain = TextBox9.Text
				' Usuario da Proxy
				nc.UserName = TextBox8.Text
				' Senha do Usuario
				nc.Password = TextBox7.Text

				WS.Credentials = nc
			End If

Em algum momento tenho que referenciar ao webservice da nota paulista, ou esta codigo ( se estiver certo ) serve para todas saídas do proxy?

 

 

Realmente agradeço a ajuda novamente....

 

 

Andre

 

---------------------------------------------------------------------------------------------------------------------------------

Código Completo

---------------------------------------------------------------------------------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		' Desabilita botão

		Button1.Enabled = False
		Try
			TextBox6.Clear()

			' Cria objeto para chamar WebService
			Dim WS As New br.gov.sp.fazenda.nfp.www.ArquivoCF
			Dim WSHeader As New br.gov.sp.fazenda.nfp.www.Autenticacao

			If CheckBox1.Checked Then

				Dim nc As New System.Net.NetworkCredential()
				' TextBox que contém o dominio da Proxy Local
				nc.Domain = TextBox9.Text
				' Usuario da Proxy
				nc.UserName = TextBox8.Text
				' Senha do Usuario
				nc.Password = TextBox7.Text

				WS.Credentials = nc
			End If

			' Parametros de envio do Cabeçalho do WebService - Função montada ao adicionar referencia
			WSHeader.CNPJ = TextBox4.Text
			WSHeader.Usuario = TextBox2.Text
			WSHeader.Senha = TextBox3.Text
			WSHeader.CategoriaUsuario = 1

			' WS.CONSULTAR, função do WEBSERVICE, Obriga apenas o envio do No. do Protocolo
			TextBox6.Text = WS.Consultar(TextBox1.Text)

		Finally
			' Habilita botão
			Button1.Enabled = True
		End Try
	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

para resolver o problema de "Object reference not set to an instance of an object" basta adicionar esta linha antes de efetuar a consulta:

 

WS.AutenticacaoValue = WSHeader

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe não ter respondido antes. Eu fiz em Delphi por isso não voltei neste post. A opção em fazer em Delphi, foi porque incorporei em um sistema existente e era feito em delphi.

 

Mas, obrigado. Serve como solução a quem precisar.

 

 

 

----------------------------------------------------------------------------------------------------------------

 

 

Pessoal,

 

para resolver o problema de "Object reference not set to an instance of an object" basta adicionar esta linha antes de efetuar a consulta:

 

WS.AutenticacaoValue = WSHeader

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.