1.何为SOAPxmlhttprpc
- soap 基于 xml 定义的一种协议,用于传递结构化数据
xml子集领域特化 - soap 可以绑定 http/tcp/udp等通信协议,以此完成网络通信
- 最常见的soap应用场景,利用http完成soap消息的交互,达成rpc交互过程
- 简单理解为soap=rpc{http+xml},在通用http+xml进一步做协议级别的约定或约束
- SOAP官方协议文档
2.soap消息结构
2.1 soap消息组成
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
- 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
识别特征 - 可选的 Header 元素,包含头部信息
- 必需的 Body 元素,包含所有的调用和响应信息
- 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
2.2 soap消息示例
# soap消息的最基本结构<Envelopexmlns="http://schemas.xmlsoap.org/soap/envelope/"><Bodyxmlns="http://schemas.xmlsoap.org/soap/envelope/">...</Body></Envelope>3.soap与http的绑定
- 参考SOAP官方协议文档第6章
- 绑定http时
- 一般只使用POST方法
- 提供SOAPAction头域
SOAPAction: "http://electrocommerce.org/abc#MyMessage" SOAPAction: "myapp.sdl" SOAPAction: "" SOAPAction:- 绑定拓展的http
- 使用M-POST方法
- 提供NNNN-SOAPAction头域
4.rpc里使用soap
- 参考SOAP协议文档第7章
- rpc通信地址,映射到http的url
- rpc的method+params,映射到xml的结构体
- soap里method名与RPC的method名同
- soap里param名与RPC的param名同
- params为结构体的子节点
- params顺序同rpc的params顺序
- rpc的result,映射到xml的结构体
- result为结构体的子节点
- result默认为首个子节点
5.webservice 3要素
- soap百度百科
- SOAP:soap用来描述传递信息的格式
网络报文 - WSDL(Web Services Description Language):WSDL 用来描述如何访问具体的接口
上层逻辑 - UDDI(Universal Description Discovery and Integration):uddi用来管理,分发,查询webService
5.1 wsdl
- wsdl百度百科
- wsdl文件的元素组成
- Type(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD)。
- Message(消息):通信数据的抽象类型化定义,它由一个或者多个 part 组成。
- Part:消息参数
- Operation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作: 1.单向(one-way):端点接受信息;2.请求-响应(request-response):端点接受消息,然后发送相关消息;3.要求-响应(solicit-response):端点发送消息,然后接受相关消息;4.通知(notification):端点发送消息。
- Port Type(端口类型):特定端口类型的具体协议和数据格式规范。
- Binding:特定端口类型的具体协议和数据格式规范。
- Port:定义为绑定和网络地址组合的单个端点。
- Service:相关端口的集合,包括其关联的接口、操作、消息等。
6.参考资料
- soap百度百科
- http协议与soap协议之间的区别
- Jmeter进行SOAP协议接口性能测试
- Python 开发与测试 Webservice(SOAP)
7 扩展阅读
- XML-RPC