Como consumir um serviço web a partir de VB6?
-
02-07-2019 - |
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?
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.
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.