一、SOAP的基本特征
1、HTTP只是一种用于传递和接收SOAP消息的便捷方式,还可以利用SMTP、FTP、、TCP/IP来携带SOAP消息。但是SOAP的广泛认可主要缘于它用HTTP来传递(即绑定HTTP,通过80端口来穿越防火墙)和基于XML,在WS-1 BP1.0中只能通过HTTP来使用SOAP。
2、SOAP有两种消息传递模式:单向消息传递模式和请求/响应消息传递模式。
二、SOAP的基本结构
1、SOAP是基于XML的,所以它首先必须是个结构良好的XML文档。
2、SOAP文档包含根元素Envelope、必须包含一个body元素、可选的个数不限的Header元素、
三、SOAP的命名空间
1、命名空间的作用:1)、避免文档元素冲突 2)、确定XML版本和处理过程
2、WS-1 BP1.0中的命名空间前缀:soap 、 xsi 、 xsd 、 soapenc、 wsdl 、 soapbind、 wsi。
四、SOAP头
1、SOAP节点:沿消息路径(初始发送方、中介体、最终接收方)的各个应用程序称为SOAP节点。
2、SOAP属性:
1)、actor属性
SOAP1.1中将actor和role混淆,所以这里的actor实际是指"角色"(role)。
SOAP属性与XML命名空间组合在一起使用,以确定用哪一个代码模块处理具体的文件头。 例如:actor 属性用URLhttp://www.Monson-Haefel.com/logger标识了日志记录器角色,那么用于完成日志记录器角色的的节点会找actor属性是该URL的文件头。
next角色表示消息路径中的下一个节点必须处理的文件头。next角色有一个指定的的URL,即'http://schemas.xmlsoap.org/soap/actor/next",此URL必须用作actor属性的值。
ultimate receiver角色表示只有消息的最终接收方才能处理的文件头。actor属性没有显式说明的情况下,角色是ultimate receiver。
mustUnderstand属性表示处理是否为强制处理。mustUnderstand的属性由SOAP1.1命名空间http://schemas.xmlsoap.org/soap/envelope/定义,该属性的值可以是"1"或"0",分别表示真和假。
五、SOAP体
SOAP中必须包含一个Body元素。Body元素要包含应用程序专用的数据或者错误消息。
SOAP消息不能同时携带应用程序专用的数据和错误消息。
大多数SOAP专家认为只有SOAP消息的最终接收方才应该处理Body元素。(在SOAP1.2中通过明确禁止某些中介体(称为前向中介体)更改Body元素的内容并建议其他所有中介体(称为活动中介体)使用文件头记录对Body元素的任何更改,从而使最终接收方确保应用程序的专用数据沿消息路径没有发生更改)。