在傳統 ASP 環境中,我們可透過 Msxml2.XMLHTTP 物件向 Web Service 發送 SOAP 訊息。以下為完整的發送與接收範例:
Set xmlhttp = Server.CreateObject("Msxml2.XMLHTTP")
XMLhttp.Open "POST", url, False
xmlhttp.setRequestHeader "Content-Type", "text/XML;charset=utf-8"
XMLhttp.setRequestHeader "HOST", "s"
XMLhttp.setRequestHeader "Content-Length", LEN(SoapRequest)
XMLhttp.setRequestHeader "SOAPAction", "https://s"
XMLhttp.Send(SoapRequest)
Response.Write XMLhttp.Status & ""
Response.Write XMLhttp.StatusText
Set XMLhttp = Nothing
If XMLhttp.Status = 200 Then
Set xmlDOC = Server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.XML
Set XMLDOC = Nothing
xmlStr = Replace(XMLStr, "<", "<")
xmlStr = Replace(XMLStr, ">", ">")
Response.write XMLStr
Else
Response.Write XMLhttp.Status & ""
Response.Write XMLhttp.StatusText
End If
若只需取得特定結果節點(如 LoginByAccountResult),可使用 XPath 直接讀取:
If XMLhttp.Status = 200 Then
Set xmlDOC = Server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write XMLDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text
Set XMLDOC = Nothing
Else
Response.Write XMLhttp.Status & ""
Response.Write XMLhttp.StatusText
End If
注意:當請求參數錯誤(如帳號、密碼不符)時,伺服器可能回傳不完整的 XML,導致解析失敗,建議搭配錯誤處理機制。