【问题标题】:Translating SOAP Messages from VBA to VB.Net将 SOAP 消息从 VBA 转换为 VB.Net
【发布时间】:2014-07-01 18:34:29
【问题描述】:

我正在尝试将我在 VBA 中编写的代码(并且工作正常)修改为 VB.Net。

这是代码:

Sub SOAP(ByVal SOAPCommand As String)


Dim sURL As String
Dim sEnv As String
Dim xmlDoc As New DOMDocument
Dim sEnvlength As Integer
Dim responseText As String

Set ObjHttp = New MSXML2.XMLHTTP
sURL = "http://localhost:9002"

sEnv = "<?xml version=""1.0"" encoding=""UTF-8""?>"
sEnv = sEnv & "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">"
sEnv = sEnv & "<SOAP-ENV:Body>"
sEnv = sEnv & "<" & SOAPCommand & "/>"
sEnv = sEnv & "</SOAP-ENV:Body>"
sEnv = sEnv & "</SOAP-ENV:Envelope>"

sEnvlength = Len(sEnv)

ObjHttp.Open "POST", sURL, False
ObjHttp.SetRequestHeader "User-Agent", "Dispatcher"
ObjHttp.SetRequestHeader "Content-Type", "text/xml; charset=us-ascii"
ObjHttp.SetRequestHeader "Host", "localhost:9002"
ObjHttp.SetRequestHeader "Content-Length", sEnvlength
ObjHttp.SetRequestHeader "Connection", "close"

ObjHttp.send (sEnv)

xmlDoc.LoadXML (ObjHttp.responseText)
responseText = ObjHttp.responseText

If Not (responseText = "") Then

MsgBox (responseText)

End If

End Sub

我知道我不能再在 VB.Net 中使用 MSXML,但我还没有找到一个方便的解决方案,如何修改我的代码,以便我可以在 Visual Studio 上的其余项目中使用它。

到目前为止,我将这段代码作为宏保存在一个单独的 Excel 文件中,我使用一个新的 Excel.Application 方法调用该文件,该方法每次都打开和关闭文件,但因为它必须重复数千次(对于模拟)这看起来并不是一个好的解决方案。

有人知道如何通过 VB.Net 发送我的 SOAP 消息吗?

我有 Visual Studio 2013 Ultimate。

【问题讨论】:

    标签: xml vb.net excel vba soap


    【解决方案1】:

    在 .NET 中,操纵 XML 将消息发送到 SOAP 服务是一个坏主意。只需使用“添加服务引用”命令并调用该服务,就好像它只是另一个类一样。

    详见“How to Consume a Web Service”。

    还请注意,绝不能通过字符串操作来创建 XML。只是规则不同而已。始终为此使用 XML API。你很幸运能使用 VB.NET,它可以内联构建 XML。

    【讨论】:

    • 感谢您的回复,很遗憾,我无法使用您的链接中描述的 Web 服务。该服务没有任何 WSDL 文件。我只是将上述格式的消息发送到服务,然后服务将其他消息发送回我的程序正在侦听的端口。虽然是一个很好的提示,但该链接对我的情况没有帮助。
    • 您确定没有 WSDL 吗?服务是用什么写的?这是非常罕见的事情。如果您不能正常使用它,那么至少看看“XML Literals Overview (Visual Basic)”,如果必须的话,看看创建 XML 的更好方法。
    猜你喜欢
    • 2011-07-07
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多