教程 > SOAP > SOAP 基本教程 阅读:451

SOAP 错误 Fault

如果在处理过程中发生错误,则对 SOAP 消息的响应是消息正文中的 SOAP 故障元素,并将故障返回给 SOAP 消息的发送者。

SOAP 错误机制返回有关错误的特定信息,包括预定义的代码、描述和生成错误的 SOAP 处理器的地址。


注意事项

  • 一条 SOAP 消息只能携带一个 Fault 块。
  • Fault 是 SOAP 消息的可选部分。
  • 对于 HTTP 绑定,成功的响应链接到 200 到 299 范围的状态代码。
  • SOAP Fault 链接到 500 到 599 范围的状态代码。

Fault 的子要素

SOAP Fault 具有以下子元素

序号 子元素 描述
1 <faultCode> 它是用于指示一类错误的文本代码。 有关预定义故障代码的列表,请参见下表。
2 <faultString> 这是一条解释错误的文本消息。
3 <faultActor> 它是一个文本字符串,指示谁导致了 Fault 。 如果 SOAP 消息经过 SOAP 消息路径中的多个节点,并且客户端需要知道哪个节点导致了错误,这将很有用。 不作为最终目的地的节点必须包含一个 faultActor 元素。
4 <detail> 它是用于携带特定于应用程序的错误消息的元素。 详细信息元素可以包含称为详细信息条目的子元素。

SOAP 错误代码

在描述故障时,必须在故障代码元素中使用下面定义的故障代码值。

序号 错误 描述
1 SOAP-ENV:VersionMismatch 发现 SOAP Envelope 元素的名称空间无效。
2 SOAP-ENV:MustUnderstand 无法理解必须理解属性设置为“1”的 Header 元素的直接子元素。
3 SOAP-ENV:Client 消息的格式不正确或包含不正确的信息。
4 SOAP-ENV:Server 服务器出现问题,因此无法继续发送消息。

SOAP Fault 示例

以下代码是一个示例故障。 客户端请求了一个名为 ValidateCreditCard 的方法,但服务不支持这种方法。 这表示客户端请求错误,服务器返回以下 SOAP 响应

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">

   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode>
         <faultstring xsi:type = "xsd:string">
            Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at
               /usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555.
         </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

查看笔记

扫码一下
查看教程更方便