从VB6消费Web服务的最佳方法是什么?

时间:2020-03-06 14:36:52  来源:igfitidea点击:

我需要从VB6程序中使用外部Web服务。如果可能的话,我希望能够在没有SOAP工具包的情况下部署我的程序,但这不是必需的。我没有Web服务源,也没有创建它。它是供应商提供的服务。

因此,在SOAP工具包之外,使用VB6中的Web服务的最佳方法是什么?

解决方案

可以说SOAP工具箱是我们可以获得的最好的工具。尝试在没有它的情况下做同样的事情将需要大量额外的精力。我们需要有非常认真的理由才能做到这一点。

SOAP消息的格式并不是很容易手动读取或者编写,因此强烈建议使用第三方库。

假设我们正在Windows XP Professional或者更高版本上运行,一种有趣的方法是使用SOAP名称。这是一个示例,摘自某些MSDN页面。我不知道这项特定服务是否有效,但我们知道了...

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

VBScript也可以使用此机制。很好

从一开始,.NET就对Web服务提供了良好的支持,因此我们可以将.NET中的Web服务客户端逻辑开发为.dll库/程序集,并通过COM Interop在VB6应用程序中使用它。

我使用此功能从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

Pocketsoap效果很好。要生成对象,请使用WSDL生成器。使用此方法,我们不必自己解析任何内容,而且所有内容都很好并且具有强类型。

在MSDN VB 6.0资源中心上查阅Scott Swigart的这篇文章。

从Visual Basic 6调用Web服务的简便方法

到目前为止,我已经使用PocketSOAP连接到Salesforce API取得了一定程度的成功。我无法使用WSDL向导,因为它会使用调用名称的前23个字符来生成包装器类文件名,这将导致重复。尽管如此,PocketSOAP在没有向导的情况下对我来说已经足够好了,并且比将XMLHTTP与DOMDocument结合使用要简单得多。

我还考虑在.NET或者使用" MS Office {MSO版本} Web服务工具包"库之一进行包装,但是使用这些选项存在很大的部署麻烦。 PocketSOAP是一个简单的COM DLL,不依赖于某些特定版本的MS Office,并已获得MPL的许可。