SOAP - 故障
如果在处理过程中发生错误,则对 SOAP 消息的响应是消息正文中的 SOAP 错误元素,并将错误返回给 SOAP 消息的发送者。
SOAP 错误机制返回有关错误的特定信息,包括预定义代码、描述以及生成错误的 SOAP 处理器的地址。
注意事项
一条 SOAP 消息只能携带一个故障块。
错误是 SOAP 消息的可选部分。
对于 HTTP 绑定,成功的响应链接到 200 到 299 范围的状态代码。
SOAP 错误与 500 到 599 范围的状态代码相关联。
故障的子要素
SOAP 错误有以下子元素 -
先生编号 | 子元素和描述 |
---|---|
1 | <故障代码> 它是用于指示一类错误的文本代码。请参阅下表了解预定义故障代码的列表。 |
2 | <故障字符串> 这是一条解释错误的短信。 |
3 | <故障参与者> 它是一个文本字符串,指示谁造成了故障。如果 SOAP 消息经过 SOAP 消息路径中的多个节点,并且客户端需要知道哪个节点导致了错误,则此功能非常有用。不充当最终目的地的节点必须包含故障Actor元素。 |
4 | <详细> 它是用于携带特定于应用程序的错误消息的元素。详细信息元素可以包含称为详细信息条目的子元素。 |
SOAP 故障代码
描述故障时,必须在故障代码元素中使用下面定义的故障代码值。
先生编号 | 错误及描述 |
---|---|
1 | SOAP-ENV:版本不匹配 发现 SOAP Envelope 元素的命名空间无效。 |
2 | SOAP-ENV:必须了解 无法理解 Header 元素的直接子元素(mustUnderstand 属性设置为“1”)。 |
3 | SOAP-ENV:客户端 该消息的格式不正确或包含不正确的信息。 |
4 | SOAP-ENV:服务器 服务器出现问题,因此消息无法继续发送。 |
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>