微软正在创建一些高级组件负责解析 SOAP 消息和完成它们所描述的工作,从而简化简单对象访问协议(SOAP)消息的处理。
SOAP 消息是将规则(order)从一台计算机带到位于其它(有时候是异构)系统上的应用程序的一种方法。从这一点来讲,远程系统将完成这些规则并以一个结果 SOAP 消息的形式从操作中返回响应。(这种公报的传输机制是 HTTP。)在本期专栏中,我将介绍用于处理 SOAP 消息的Microsoft SoapClient30 和 SoapServer30 对象。
SoapClient30 和 SoapServer30 组件属于 Microsoft SOAP Toolkit 3.0
的一部分。SoapClient30 组件是一个用于构造 SOAP 消息的高级组件。SoapServer30 是一个处理 SOAP 消息的高级组件。SOAP Toolkit 中还有一个实用工具是WSDL/WSML Generator。你可以使用这个方便的小工具通过一个 GUI 应用程序来创建 WSDL 和 WSML 文件。这样,你就不必自已手工构造这些文件了,自己构造这些文件是一件非常乏味的事情。
现在我将创建一个简单的 Web 服务例子。我使用WSDL/WSML Generator 创建基于我的 COM+ 组件的WSDL/WSML 文件。此外,我使用SoapServer30 对象处理传入的 SOAP 消息。最后,我使用SoapClient30 对象创建调用 Web 服务的客户端。
首先,我在 Visual Basic 中创建一个简单的 ActiveX DLL。然后我添加了对Microsoft XML, v4.0 library 以及对Microsoft Soap Type Library v3.0 的引用。检查项目属性中的Unattended Execution And Retained In Memory 选项。我将项目命名为 MyService,类模块命名为 Example。下面是这个组件的代码:
Option Explicit
Public Function echoText(nodeList As IXMLDOMNodeList) As String
On Error GoTo ErrorHandler
Dim node As IXMLDOMNode, s As String
Dim lError As Long, sError As String
s = ""
For Each node In nodeList
s = s & node.Text
Next
ExitCall:
Set node = Nothing
If lError <> 0 Then
s = "Error: " & vbObjectError & lError & vbTab & sError
End If
echoText = s
Exit Function
ErrorHandler:
lError = Err.Number
sError = Err.Description
Resume ExitCall
End Function
(listener)类别 ASP。添加一个 ASP SOAP 监听器到 IIS Web 服务器的虚拟目录中。然后添加如下代码到 ASP 监听器中:
<%@ Language=_VBScript %>
<%
Option Explicit
Dim soap, wsdl, wsml
Set soap = CreateObject("MSSOAP.SoapServer30")
wsdl = Server.MapPath("MyService.wsdl")
wsml = Server.MapPath("MyService.wsml")
soap.Init wsdl, wsml
soap.SoapInvoke request, response
%>
将前面的代码保存到虚拟目录内的一个文件 MyServce.ASP 中。然后将下面的代码保存到一个 HTML 页面:
function send_xml() {
var soap = new ActiveXObject("MSSOAP.SoapClient30");
var xml = new ActiveXObject("MSXML2.DOMDocument.4.0");
xml.async = false;
if (xml.loadXML(txtMain.value)) {
soap.MSSoapInit("http://localhost/Develop/SOAP/MyServiceClient.WSDL",
"MyService", "ExampleSoapPort");
divMain.innerText = soap.echoText(xml.selectNodes("//node"));
}
}
This will display the text value of the XML.
将生成的 WSDL 文件拷贝到MyServiceClient.WSDL 并将 的 location 属性改为通过端口 8080:
这样你就可以使用 SOAP Toolkit 中的 Trace Utility 了。启动 Trace Utility 并在浏览器中查看 HTML 页面。点击按钮并查看结果。如果一切都正常的话,你将会看到
中生成的文本。
这个简单的例子介绍了 SOAP Toolkit。在这个工具箱中可以找到更复杂的例子,包括使用 DIME 附件等。
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读