Olá pessoal, estou tentando consumir uma webservice passando parâmetro e não estou conseguindo obter um resultado no retorno. Alguém poderia me dizer onde estou errando, agredito que seja na variável sResultado, que se refere a uma variável de retorno. Logo abaixo desse código tem um exemplo no VB.NET e eu gostaria de aplicar no VB6, agradeço ajuda.
Private Sub Command1_Click()
Dim strSoapAction As String
Dim strUrl As String
Dim strXml As String
Dim sNFnumero As String
Dim iNFmodelo As Integer
Dim sNFserie As String
Dim sNFemissao As String
Dim dFvalor As Double
Dim sCNPJfornecedor As String
Dim sCNPJorgao As String
Dim sResultado As String
Dim sResultadoDesc As String
sNFnumero = "000035"
nNFmodelo = 1
sNFserie = "A"
sNFemissao = "15/2/2008"
sNFvalor = 16250
sCNPJfornecedor = "06556003000192"
sCNPJorgao = "08096570000139"
sResultado = ""
sResultadoDesc = ""
txtOutput.Text = ""
strUrl = "http://www.set.rn.gov.br/compralegal/wscompralegal/service.asmx"
strSoapAction = "http://www.set.rn.gov.br/compralegal/wscompralegal/LerChaveAutenticadora"
strXml = "<?xml version=""1.0"" encoding=""utf-8""?>" & _
"<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:Body>" & _
"<LerChaveAutenticadora xmlns=""http://www.set.rn.gov.br/compralegal/wscompralegal"">" & _
"<strNfnumero>" & sNFnumero & "</strNfnumero>" & _
"<intNfmodelo>" & nNFmodelo & "</intNfmodelo>" & _
"<strNfserie>" & sNFserie & "</strNfserie>" & _
"<dtNfemissao>" & sNFemissao & "</dtNfemissao>" & _
"<dblNfvalortotal>" & sNFvalor & "</dblNfvalortotal>" & _
"<strCnpjfornecedor>" & sCNPJfornecedor & "</strCnpjfornecedor>" & _
"<strCnpjorgaopublico>" & sCNPJorgao & "</strCnpjorgaopublico>" & _
"<strResultado>" & sResultado & "</strResultado>" & _
"<strResultadoDesc>" & sResultadoDesc & "</strResultadoDesc>" & _
"</LerChaveAutenticadora>" & _
"</soap:Body>" & _
"</soap:Envelope>"
txtOutput.Text = PostWebservice(strUrl, strSoapAction, strXml)
End Sub
Private Function PostWebservice(ByVal AsmxUrl As String, ByVal SoapActionUrl As String, ByVal XmlBody As String) As String
Dim objDom As Object
Dim objXmlHttp As Object
Dim strRet As String
Dim intPos1 As Integer
Dim intPos2 As Integer
On Error GoTo Err_PW
' Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
' Load XML
objDom.async = False
objDom.loadXML XmlBody
' Open the webservice
objXmlHttp.open "POST", AsmxUrl, False
' Create headings
objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl
' Send XML command
objXmlHttp.send objDom.xml
' Get all response text from webservice
strRet = objXmlHttp.responseText
' Close object
Set objXmlHttp = Nothing
' Extract result
intPos1 = InStr(strRet, "Result>") + 7
intPos2 = InStr(strRet, "</")
If intPos1 > 7 And intPos2 > 0 Then
strRet = Mid(strRet, intPos1, intPos2 - intPos1)
End If
' Return result
PostWebservice = strRet
Exit Function
Err_PW:
PostWebservice = "Error: " & Err.Number & " - " & Err.Description
End Function
EXEMPLO NO VB.NET
'Declara um objeto do webservice:
Dim ws As New wsCompralegal.Service()
'Declara a variável que receberá o retorno do serviço, ou seja, o autenticador:
Dim strAutenticador As String = String.Empty
'Declara as duas variáveis de tratamento dos resultados do serviços:
Dim enResultado As wsCompralegal.RESULTADO
Dim strResultadoDescricao As String = ""
Try
'Chama o serviço e armazena os resultados nas variáveis de saída,
'além do retorno armazenado em strAutenticador:
strAutenticador = ws.LerChaveAutenticadora("000035", 1, "A", "15/2/2008", 16250, _
"06556003000192", "08096570000139", enResultado, strResultadoDescricao)
'Testa se o resultado foi OK (NF encontrada). Se encontrou imprime; senão, lança uma exceção:
If Not enResultado = wsCompralegal.RESULTADO.OK Then
Throw New Exception(String.Format("{0} - {1}", enResultado, strResultadoDescricao))
End If
Console.WriteLine("strAutenticador: " & strAutenticador)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Pergunta
vpvjunior
Olá pessoal, estou tentando consumir uma webservice passando parâmetro e não estou conseguindo obter um resultado no retorno. Alguém poderia me dizer onde estou errando, agredito que seja na variável sResultado, que se refere a uma variável de retorno. Logo abaixo desse código tem um exemplo no VB.NET e eu gostaria de aplicar no VB6, agradeço ajuda.
Private Sub Command1_Click() Dim strSoapAction As String Dim strUrl As String Dim strXml As String Dim sNFnumero As String Dim iNFmodelo As Integer Dim sNFserie As String Dim sNFemissao As String Dim dFvalor As Double Dim sCNPJfornecedor As String Dim sCNPJorgao As String Dim sResultado As String Dim sResultadoDesc As String sNFnumero = "000035" nNFmodelo = 1 sNFserie = "A" sNFemissao = "15/2/2008" sNFvalor = 16250 sCNPJfornecedor = "06556003000192" sCNPJorgao = "08096570000139" sResultado = "" sResultadoDesc = "" txtOutput.Text = "" strUrl = "http://www.set.rn.gov.br/compralegal/wscompralegal/service.asmx" strSoapAction = "http://www.set.rn.gov.br/compralegal/wscompralegal/LerChaveAutenticadora" strXml = "<?xml version=""1.0"" encoding=""utf-8""?>" & _ "<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:Body>" & _ "<LerChaveAutenticadora xmlns=""http://www.set.rn.gov.br/compralegal/wscompralegal"">" & _ "<strNfnumero>" & sNFnumero & "</strNfnumero>" & _ "<intNfmodelo>" & nNFmodelo & "</intNfmodelo>" & _ "<strNfserie>" & sNFserie & "</strNfserie>" & _ "<dtNfemissao>" & sNFemissao & "</dtNfemissao>" & _ "<dblNfvalortotal>" & sNFvalor & "</dblNfvalortotal>" & _ "<strCnpjfornecedor>" & sCNPJfornecedor & "</strCnpjfornecedor>" & _ "<strCnpjorgaopublico>" & sCNPJorgao & "</strCnpjorgaopublico>" & _ "<strResultado>" & sResultado & "</strResultado>" & _ "<strResultadoDesc>" & sResultadoDesc & "</strResultadoDesc>" & _ "</LerChaveAutenticadora>" & _ "</soap:Body>" & _ "</soap:Envelope>" txtOutput.Text = PostWebservice(strUrl, strSoapAction, strXml) End Sub Private Function PostWebservice(ByVal AsmxUrl As String, ByVal SoapActionUrl As String, ByVal XmlBody As String) As String Dim objDom As Object Dim objXmlHttp As Object Dim strRet As String Dim intPos1 As Integer Dim intPos2 As Integer On Error GoTo Err_PW ' Create objects to DOMDocument and XMLHTTP Set objDom = CreateObject("MSXML2.DOMDocument") Set objXmlHttp = CreateObject("MSXML2.XMLHTTP") ' Load XML objDom.async = False objDom.loadXML XmlBody ' Open the webservice objXmlHttp.open "POST", AsmxUrl, False ' Create headings objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl ' Send XML command objXmlHttp.send objDom.xml ' Get all response text from webservice strRet = objXmlHttp.responseText ' Close object Set objXmlHttp = Nothing ' Extract result intPos1 = InStr(strRet, "Result>") + 7 intPos2 = InStr(strRet, "</") If intPos1 > 7 And intPos2 > 0 Then strRet = Mid(strRet, intPos1, intPos2 - intPos1) End If ' Return result PostWebservice = strRet Exit Function Err_PW: PostWebservice = "Error: " & Err.Number & " - " & Err.Description End FunctionEXEMPLO NO VB.NET'Declara um objeto do webservice: Dim ws As New wsCompralegal.Service() 'Declara a variável que receberá o retorno do serviço, ou seja, o autenticador: Dim strAutenticador As String = String.Empty 'Declara as duas variáveis de tratamento dos resultados do serviços: Dim enResultado As wsCompralegal.RESULTADO Dim strResultadoDescricao As String = "" Try 'Chama o serviço e armazena os resultados nas variáveis de saída, 'além do retorno armazenado em strAutenticador: strAutenticador = ws.LerChaveAutenticadora("000035", 1, "A", "15/2/2008", 16250, _ "06556003000192", "08096570000139", enResultado, strResultadoDescricao) 'Testa se o resultado foi OK (NF encontrada). Se encontrou imprime; senão, lança uma exceção: If Not enResultado = wsCompralegal.RESULTADO.OK Then Throw New Exception(String.Format("{0} - {1}", enResultado, strResultadoDescricao)) End If Console.WriteLine("strAutenticador: " & strAutenticador) Catch ex As Exception Console.WriteLine(ex.Message) End TryEditado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.