从VB6中使用Web服务的最佳方式是什么?

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

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

我使用这个函数从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 

.NET从一开始就对Web服务有很好的支持,所以你可以用.dll库/程序集在.NET中开发Web服务客户端逻辑,并通过COM Interop在VB6应用程序中使用它。

假设您正在运行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。 这很好。

Pocketsoap工作得很好。 要生成你的对象,使用WSDL生成器 。 使用这个你不需要自己parsing任何东西,再加上一切都很好,而且很强types。

请参阅MSDN VB 6.0资源中心的Scott Swigart撰写的这篇文章。

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

到目前为止,我已经使用PocketSOAP连接到Salesforce API,取得了一些成功。 我无法使用WSDL向导,因为它使用调用名称的前23个字符来生成包装类文件名,这会导致重复。 尽pipe如此,PocketSOAP在没有向导的情况下对我来说已经足够好了,比使用XMLHTTP和DOMDocument更直接。

我还研究了在.NET中使用封装器或使用“MS Office {MSO版本} Web服务工具包”库中的一个,但是这些选项存在重大的部署麻烦。 PocketSOAP是一个简单的COM DLL,不依赖于某些特定版本的MS Office,并在MPL下获得许可。

SOAP工具包可以说是你能得到的最好的。 试图做同样的事情没有它会需要相当大的额外努力。 你需要有相当严肃的理由才能做到这一点。

SOAP消息的格式不是很容易手动读取或写入,并且强烈build议使用第三方库。