SOAP,简单对象访问协议,是一种基于XML的,用于在计算机之间交换信息的协议。
SOAP一般包含一个强制性Envelope元素,一个可选的Header元素,一个强制性的Body元素。
1.Envelope
这是SOAP的根元素,SOAP的版本一般要在这里声明。以下是1.2名称空间的地址
<SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
2.Header
这个框架主要是为身份验证,事务管理和支付授权提供一个开放的机制。
目前主要有以下几个属性:
role属性:定义了SOAP结点是否需要处理某个Header Block.
none:表示该Header Block不能被任何SOAP结点处理
next:应该被每一个结点处理。
ultimateReceiver:只有最后一个接收者才能处理
MustUnderstand属性:规定SOAP结点是否必须处理某个Header Block.如果不能处理则要求返回一个错误信息。
relay属性:规定Header Block是否应该被继续传递下一个SOAP结点。一般的SOAP结点在处理完一个Header Block后,应该将它从所在的SOAP消息中删除。
SOAP消息的处理过程如下:
3.Body
主要用来存储消息的内容,取决于具体的消息。有一个预定义的Falt元素,在服务处理请求出错时,出错消息被包装在Falut元素中,返回给请求方。Fault元素必须包含两个子元素:Code和Reason元素,另外三个可选的:Detail,Node,Role元素。Code元素又包括一个必须的Value元素和一个可选的Subcode元素。Value元素的值可以是下面预定义5个可能的错误代码之一:
VersionMismatch:版本不匹配
MustUnderstand:SOAP结点不能处理SOAP消息中某个必须处理的结点
DataEncodingUnknown:SOAP结点不能处理SOAP消息的数据编码
Sender:SOAP结点接收到的SOAP消息格式不正确
Receiver:SOAP结点不能处理该SOAP消息
SOAP协议支持两种编程风格,分别为文档风格和RPC方格。
使用文档风格时,SOAP消息中的Body元素包含需要被该服务处理的业务文档(推荐)
使用RPC风格时,Body元素则包含被调用方法的名字及其参数。
SOAP1.2定义了两种与HTTP协议绑定的方式,分别为HTTP的GET和POST方法