Ir para conteúdo
Fórum Script Brasil
  • 0

WEBSERVICE NO VB6


vpvjunior

Pergunta

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

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...