将SOAP消息从VBA转换为VB.Net

时间:2014-05-13 21:51:00

标签: xml vb.net excel vba soap

我正在尝试将我在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的项目中使用它。< / p>

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

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

我有Visual Studio 2013 Ultimate。

1 个答案:

答案 0 :(得分:0)

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

有关详细信息,请参阅“How to Consume a Web Service”。

另请注意,永远不应该通过字符串操作创建XML。规则是不同的。始终使用XML API。你很幸运能够使用VB.NET,它可以内联构建XML。