SOAP知识摘要和注意点(二)

    六、SOAP的消息传递模式

            SOAP共支持四种消息传递模式:RPC/Literal 、Document/Literal 、RPC/Encoded 和Document/Encoded模式。常用的是前两种模式,而且WEB SERVICE也只支持前两种。

           1、Document/Literal 消息传递模式

例如:                         "http://schemas.xmlsoap.org/soap/envelope/">
  
    
      
        3
        4
      

    
  



"http://schemas.xmlsoap.org/soap/envelope/">
  
    
      
        300
        400
      

    

  

SOAP的Body元素包含一个XML文档段,该文档段是一个格式良好的XML元素,它包含独立于SOAP消息的属于XML模式和名称空间的任意应用程序(文本和其他元素)。

           2、RPC/Literal 消息传递模式

            例如:                        "http://schemas.xmlsoap.org/soap/envelope/">
  
    
            "http://dataNamespace.com">
        5
        6
      

      
                "http://refNamespace.com">7
      

    

  



RPC/Literal 消息传递模式与Document/Literal消息传递模式不同,后者并不会假设在消息的Body元素内包含元素的类型与结构(但文档要遵循一些XML模式)。前者要携带一些简单的参数。RPC样式的消息传递是分布式技术中常用的方式,其中包括EJB、CORBA、DCOM等。所以SOAP为RPC样式的消息传递定义了一个标准的XML格式,即RPC/Literal传递。

另外两种消息传递模式不常用,且WS BP1.0也不支持,所以就不写了。

七、SOAP错误

        错误元素包括:faultcode元素、 faultString元素、 faultactor元素、 detail元素。

       例如:
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 
  soap:Server
  XML for Analysis 提供程序遇到错误
  XML for Analysis Provider
 
  
    <Error
    ErrorCode="2147483653"
    Description="出现意外的错误。"
    Source="XML for Analysis Provider"
    HelpFile=""
    />
  

 



         1、SOAP faultcode元素

            顾名思义就是SOAP错误代码,一看就知道是用来表示错误类型的。

错误类型 表示 错误来源  
Client错误 soap:Client 传递SOAP消息的节点出现错误  
Server错误 soap:Server 收到SOAP消息的节点发生故障或不能处理SOAP消息。  
VersionMismatch错误 soap:VersionMismatch 接收节点不能识别SOAP消息的Envelope元素的命名空间  
MustUnderstand错误 soap:MustUnderstand 消息文件头指向当前节点,并将MustUnderstand属性设置为“1”,但是当前节点不能识别该文件头  

        2、faultString元素

           faultString元素是强制元素,也就是说,每个SOAP fault元素必须包含一个faultString子元素。可以通过元素属性 xml:lang="  "来指明faultString的语言类型。例如:xml:lang="es"表示描述字符串是意大利语。

        3、faultactor元素

             faultactor元素表示遇到了错误并产生了错误的节点。如果错误是一个中介体(即中间节点),那么需要使用faultactor元素,但如果错误节点是最终接收方,则该元素可有可无。

        4、detail元素

              如果Body元素的内容产生了一个错误,则必须包含错误消息的detail元素,但如果当处理文件头时发生了错误,则不能包含该元素。使用空detail元素是合法的。

你可能感兴趣的:(SOA,&,Web,service)