SOAP1.2学习笔记

SOAP,简单对象访问协议,是一种基于XML的,用于在计算机之间交换信息的协议。

SOAP一般包含一个强制性Envelope元素,一个可选的Header元素,一个强制性的Body元素。 

SOAP1.2学习笔记

 1.Envelope

这是SOAP的根元素,SOAP的版本一般要在这里声明。以下是1.2名称空间的地址

Java代码 复制代码  收藏代码
  1. <SOAP-ENV:Envelope   
  2.      xmlns:SOAP-ENV=<A href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</A>  
<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消息的处理过程如下:

  • 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元素必须包含两个子元素:CodeReason元素,另外三个可选的:Detail,Node,Role元素。Code元素又包括一个必须的Value元素和一个可选的Subcode元素。Value元素的值可以是下面预定义5个可能的错误代码之一:

VersionMismatch:版本不匹配

MustUnderstand:SOAP结点不能处理SOAP消息中某个必须处理的结点

DataEncodingUnknown:SOAP结点不能处理SOAP消息的数据编码

Sender:SOAP结点接收到的SOAP消息格式不正确

Receiver:SOAP结点不能处理该SOAP消息


SOAP1.2学习笔记
 

SOAP协议支持两种编程风格,分别为文档风格和RPC方格。

使用文档风格时,SOAP消息中的Body元素包含需要被该服务处理的业务文档(推荐)

使用RPC风格时,Body元素则包含被调用方法的名字及其参数。

 SOAP1.2定义了两种与HTTP协议绑定的方式,分别为HTTP的GETPOST方法

 

你可能感兴趣的:(编程,框架,xml,SOAP)