SOAP1.2学习笔记(转)
SOAP,简单对象访问协议,是一种基于XML的,用于在计算机之间交换信息的协议。
SOAP一般包含一个强制性Envelope元素,一个可选的Header元素,一个强制性的Body元素。?
?1.Envelope
这是SOAP的根元素,SOAP的版本一般要在这里声明。以下是1.2名称空间的地址
??
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消息的处理过程如下:
SOAP结点招收到一条SOAP消息; SOAP结点根据SOAP消息中Header元素的role属性值,确定它可以处理的Header? Block集合; 在这些可以处理的Header Block集合中,SOAP结点进一步确定哪些是必须处理的,也就是mustUnderstand属性值为true的Header Block集合; SOAP结点处理消息。如果该结点不能处理必须处理的消息,则返回一条错误信息,对于可选的Header Block,该结点可以处理也可以忽略; 所有被处理和被忽略的Header Block将被删除,除非其relay属性值为真。该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方法
?