2014-05-13 103 views
0

我想修改我在VBA中編寫的代碼(並且工作正常)到VB.Net中。將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項目中使用它。

到目前爲止,我已經將此代碼作爲一個單獨的Excel文件中的宏,我使用新的Excel.Application方法每次打開和關閉這些文件,但因爲它必須重複數千次(用於一個模擬),這看起來不是一個好的解決方案。

有沒有人有一個想法,我可以通過VB.Net發送我的SOAP消息?

我確實擁有Visual Studio 2013 Ultimate。

回答

0

在.NET中,操縱XML將消息發送到SOAP服務是一個壞主意。只需使用「添加服務引用」命令並調用服務,就好像它只是另一個類一樣。

有關詳細信息,請參閱「How to Consume a Web Service」。

還要注意,不應該通過字符串操作來創建XML。規則是不同的。爲此,始終使用XML API。你很幸運能夠使用VB.NET,它可以在線構建XML。

+0

感謝您的回覆, 不幸的是,我可以不使用Web服務,因爲它是在你的鏈接desribed。該服務沒有任何WSDL文件。我只是將格式如上所示的消息發送到服務,而服務會將其他消息發送回我的程序正在監聽的端口。雖然是一個很好的提示,但鏈接並沒有幫助我的情況。 – Kazaa

+0

你確定沒有WSDL嗎?什麼是寫入服務?這是非常罕見的事情。如果你不能正常使用它,那麼至少看看「[XML文字概述(Visual Basic)](http://msdn.microsoft.com/zh-cn/library/bb384629.aspx)」以查看更好如果必須的話,可以創建XML。 –