- 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>