我正在尝试将我在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。
答案 0 :(得分:0)
在.NET中,操纵XML以将消息发送到SOAP服务是个坏主意。只需使用“添加服务引用”命令并调用该服务,就好像它只是另一个类一样。
有关详细信息,请参阅“How to Consume a Web Service”。
另请注意,永远不应该通过字符串操作创建XML。规则是不同的。始终使用XML API。你很幸运能够使用VB.NET,它可以内联构建XML。