Pergunta

Eu preciso de consumir um serviço Web externo do meu programa VB6. Eu quero ser capaz de implantar o meu programa sem o kit de ferramentas SOAP, se possível, mas isso não é uma exigência. Eu não tenho a fonte de serviço web e eu não criá-lo. É um serviço fornecido pelo fabricante.

Assim, fora do kit de ferramentas SOAP, o que é a melhor maneira de consumir um serviço web a partir de VB6?

Foi útil?

Solução

Eu uso essa função para obter dados de um serviço web.

Private Function HttpGetRequest(url As String) As DOMDocument
    Dim req As XMLHTTP60
    Set req = New XMLHTTP60
    req.Open "GET", url, False
    req.send ""

    Dim resp As DOMDocument
    If req.responseText <> vbNullString Then
        Set resp = New DOMDocument60
        resp.loadXML req.responseText
    Else
        Set resp = req.responseXML
    End If
    Set HttpGetRequest = resp
End Function

Outras dicas

.NET tem um bom suporte para Web Services desde o primeiro dia, para que possa desenvolver a sua lógica de cliente de serviço da Web em .NET como uma biblioteca .dll / montagem e usá-lo em VB6 app via COM Interop.

Assumindo que você está em execução no Windows XP Professional ou acima, um método interessante é usar o apelido SOAP. Aqui está um exemplo, tirado de alguma página MSDN. Eu não sei se esse serviço específico funciona, mas você começa a idéia ...

   set SoapObj = GetObject
       ("soap:wsdl=http://www.xmethods.net/sd/TemperatureService.wsdl")
   WScript.Echo "Fairbanks Temperature = " & SoapObj.getTemp("99707")

Este mecanismo também funciona a partir de VBScript. Que é bom.

Pocketsoap funciona muito bem. Para gerar os objetos usar o WSDL gerador . Usando isso, você não tem que nada parse-se, além de tudo é agradável e fortemente tipado.

Confira este artigo por Scott Swigart na MSDN VB 6.0 Resource Center.

chamada Web Services a partir do Visual Basic 6, o Easy Way

Eu tive alguma medida de sucesso até agora usando PocketSOAP para se conectar à API Salesforce. Eu não poderia usar o Assistente de WSDL porque gera invólucro nomes de classe usando os primeiros 23 caracteres dos nomes de chamadas, e isso resulta em duplicatas. No entanto, PocketSOAP tem vindo a trabalhar bem o suficiente para mim sem o assistente, e é muito mais simples do que usar XMLHTTP com DOMDocument.

Eu também olhou para fazer um invólucro em .NET ou usando um dos "MS Office {versão MSO} Web Services Toolkit" bibliotecas, mas houve dificuldades de implementação significativos com essas opções. PocketSOAP é um simples COM DLL, que não depende de alguma versão específica do MS Office, e está licenciado sob MPL.

O kit de ferramentas SOAP é sem dúvida o melhor que você poderia começar. Tentando fazer a mesma coisa sem ele exigiria considerável esforço extra. Você precisa ter razões muito sérias para fazer isso.

O formato das mensagens SOAP não é realmente fácil de ler ou escrever manualmente e uma biblioteca de terceiros é altamente recomendado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top