WEBSERVICE NO VB6

VPVJUNIOR 11/05/2010 21:58:11
#341532
Olá pessoal, estou tentando consumir uma webservice passando parâmetro para obter um resultado no retorno, mas não estou conseguindo. Pequei um exemplo de como passar parâmetro em um link citado aqui mesmo no forum e apenas adaptei ao meu. Alguém poderia me dizer onde estou errando, grato.

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

NETMANIA 12/05/2010 08:40:28
#341541
Qual é a mensagem de erro que retorna quando você tenta executar o código?
VPVJUNIOR 12/05/2010 08:55:38
#341544
A mensagem de erro é o seguinte:

<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô]?><soap:Envelope xmlns:soap=[Ô]http://schemas.xmlsoap.org/soap/envelope/[Ô] xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xmlns:xsd=[Ô]http://www.w3.org/2001/XMLSchema[Ô]><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Server was unable to read request. ---> There is an error in XML document (2, 566). ---> Instance validation error: [ô][ô] is not a valid value for RESULTADO.</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>

nesse link tem um exemplo de como fazer no VB.NET e os parâmetros que devo montar
http://www.tce.rn.gov.br/2009/download/siai2009/Compra%20Legal%20-%20Webservice[1].pdf
VPVJUNIOR 20/05/2010 17:19:01
#342319
E ai galera! alguém mais poderia me ajudar, nessa bronca. Valeu.
TECLA 20/05/2010 18:03:22
#342329
A rotina em VB.NET funcionou direitinho aqui nos testes... agora em VB6 está dando um erro diferente do seu.
Veja o código e o erro a seguir:

  • Código
    Option Explicit

    Private Enum RESULTADO
  • [ô][ô][ô]<remarks/>
    NO
    [ô][ô][ô]<remarks/>
    VA
    [ô][ô][ô]<remarks/>
    OK
    End Enum

    Private Sub Command1_Click()
    On Error GoTo erro

    Dim soap, resp As String, strAutenticador As String
    Dim enResultado As RESULTADO, strResultadoDescricao As String
    Set soap = CreateObject([Ô]MSSOAP.SoapClient30[Ô])

    Call soap.MSSoapInit([Ô]http://www.set.rn.gov.br/compralegal/wscompralegal/service.asmx?WSDL[Ô], [Ô]Service[Ô])
    strAutenticador = soap.LerChaveAutenticadora([Ô]000035[Ô], 1, [Ô]A[Ô], [Ô]15/2/2008[Ô], 16250, [Ô]06556003000192[Ô], [Ô]08096570000139[Ô], enResultado, strResultadoDescricao)
    If enResultado = RESULTADO.OK Then
    MsgBox enResultado & [Ô] - [Ô] & strResultadoDescricao
    Else
    MsgBox strAutenticador
    End If

    Exit Sub
    erro:
    MsgBox Err.Description
    End Sub


  • Erro
  • [txt-color=#e80000]Server was unable to read request. ---> There is an error in XML document (1, 1248). ---> Instance validation error: [ô]0[ô] is not a valid value for RESULTADO.[/txt-color]
    VPVJUNIOR 21/05/2010 16:32:47
    #342429
    TECLA! o meu tb está dando esse erro, o que poderá ser amigo? abraços.
    Tópico encerrado , respostas não são mais permitidas