這是一個示例程序,從使用Microsoft XML 3.0庫中的Web服務獲取數據:
Sub DoIt()
Dim sURL As String
Dim sEnv As String
Dim xmlHtp As New MSXML2.XMLHTTP
Dim xmlDoc As New DOMDocument
Dim oValueNodes As MSXML2.IXMLDOMNodeList
sURL = "http://webservices.gama-system.com/exchangerates.asmx?op=CurrentConvertToEUR"
sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
sEnv = sEnv & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
sEnv = sEnv & " <soap:Body>"
sEnv = sEnv & " <CurrentConvertToEUR xmlns=""http://www.gama-system.com/webservices"">"
sEnv = sEnv & " <dcmValue>100</dcmValue>"
sEnv = sEnv & " <strBank>BS</strBank>"
sEnv = sEnv & " <strCurrency>USD</strCurrency>"
sEnv = sEnv & " <intRank>1</intRank>"
sEnv = sEnv & " </CurrentConvertToEUR>"
sEnv = sEnv & " </soap:Body>"
sEnv = sEnv & "</soap:Envelope>"
With xmlHtp
.Open "post", sURL, False
.setRequestHeader "Host", "webservices.gama-system.com"
.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
.setRequestHeader "soapAction", "http://www.gama-system.com/webservices/CurrentConvertToEUR"
.send sEnv
xmlDoc.loadXML .responseText
Set oValueNodes = xmlDoc.getElementsByTagName("CurrentConvertToEURResponse")
MsgBox oValueNodes.Item(0).nodeTypedValue
End With
'xmlDoc.Save ThisWorkbook.Path & "\WebQueryResult.xml"
End Sub
你需要關鍵的是SOAP信封的WebService期待的確切結構。
我不使用SOAP,但使用新的Web服務,所以我不知道我的信封如何。我打算使用在我的WSDL中定義的客戶端類。 – sinsedrix
在這種情況下,我無法提供太多幫助。但是,是什麼觸發了對web服務的調用(我發送給它的是什麼以及URL是什麼)以及web服務返回的是什麼? – jkpieterse
最後,我不想依賴於接口,所以我將使用SOAP enveloppe方法。 – sinsedrix