- SOAP 教程
- SOAP - 首页
- SOAP - 什么是 SOAP?
- SOAP - 消息
- SOAP - 信封
- SOAP - 头部
- SOAP - 主体
- SOAP - 故障
- SOAP - 编码
- SOAP - 传输
- SOAP - 示例
- SOAP - 标准
- SOAP 资源
- SOAP - 快速指南
- SOAP - 有用资源
- SOAP - 讨论
SOAP - 故障
如果在处理过程中发生错误,对 SOAP 消息的响应将在消息主体中包含一个 SOAP 故障元素,并且故障将返回给 SOAP 消息的发送方。
SOAP 故障机制返回有关错误的具体信息,包括预定义代码、描述以及生成故障的 SOAP 处理器的地址。
注意事项
一条 SOAP 消息只能包含一个故障块。
故障是 SOAP 消息的可选部分。
对于 HTTP 绑定,成功的响应与 200 到 299 范围内的状态代码相关联。
SOAP 故障与 500 到 599 范围内的状态代码相关联。
故障的子元素
SOAP 故障具有以下子元素:
| 序号 | 子元素 & 描述 |
|---|---|
| 1 | <faultCode> 它是一个文本代码,用于指示一类错误。请参见下表以获取预定义故障代码的列表。 |
| 2 | <faultString> 它是一个解释错误的文本消息。 |
| 3 | <faultActor> 它是一个文本字符串,指示谁导致了故障。如果 SOAP 消息在 SOAP 消息路径中的多个节点之间传输,并且客户端需要知道哪个节点导致了错误,则此功能很有用。不充当最终目的地的节点必须包含一个 faultActor 元素。 |
| 4 | <detail> 它是一个用于承载特定于应用程序的错误消息的元素。detail 元素可以包含称为详细信息条目的子元素。 |
SOAP 故障代码
在描述故障时,必须在 faultcode 元素中使用以下定义的 faultCode 值。
| 序号 | 错误 & 描述 |
|---|---|
| 1 | SOAP-ENV:VersionMismatch 找到 SOAP Envelope 元素的无效命名空间。 |
| 2 | SOAP-ENV:MustUnderstand Header 元素的直接子元素,其 mustUnderstand 属性设置为“1”,未被理解。 |
| 3 | SOAP-ENV:Client 消息格式不正确或包含不正确的信息。 |
| 4 | SOAP-ENV:Server 服务器出现问题,因此消息无法继续。 |
SOAP 故障示例
以下代码是一个故障示例。客户端已请求名为 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>