15

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

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

4

7 回答 7

11

我使用此函数从 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
于 2008-09-23T19:39:43.253 回答
4

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

于 2008-09-23T18:06:15.677 回答
3

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

于 2008-09-23T18:01:19.073 回答
2

Pocketsoap工作得很好。要生成您的对象,请使用WSDL 生成器。使用它你不必自己解析任何东西,而且一切都很好并且是强类型的。

于 2008-09-23T21:43:02.177 回答
1

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

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

于 2008-10-22T23:28:12.473 回答
1

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

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

于 2010-03-31T19:57:06.223 回答
0

SOAP 工具包可以说是你能得到的最好的。在没有它的情况下尝试做同样的事情将需要相当大的额外努力。你需要有非常严肃的理由才能这样做。

SOAP 消息的格式很难手动读取或写入,强烈建议使用第三方库。

于 2008-09-23T17:58:49.890 回答