Soap-fault
SOAP-障害
処理中にエラーが発生した場合、SOAPメッセージへの応答はメッセージ本文のSOAPエラー要素であり、エラーはSOAPメッセージの送信者に返されます。
SOAPエラーメカニズムは、エラーを生成したSOAPプロセッサの定義済みコード、説明、アドレスなど、エラーに関する特定の情報を返します。
注意点
- SOAPメッセージには、1つの障害ブロックのみを含めることができます。
- 障害は、SOAPメッセージのオプション部分です。
- HTTPバインディングの場合、成功した応答はステータスコードの200〜299の範囲にリンクされます。 *SOAP Faultは、ステータスコードの500〜599の範囲にリンクされています。
障害のサブ要素
SOAP障害には、次のサブ要素があります-
Sr.No | Sub-element & Description |
---|---|
1 |
これは、エラーのクラスを示すために使用されるテキストコードです。 事前定義された障害コードのリストについては、次の表を参照してください。 |
2 |
<faultString> エラーを説明するテキストメッセージです。 |
3 |
<faultActor> 誰が障害を引き起こしたかを示すテキスト文字列です。 SOAPメッセージがSOAPメッセージパス内のいくつかのノードを通過し、クライアントがエラーの原因となったノードを知る必要がある場合に役立ちます。 最終的な宛先として機能しないノードには、_faultActor_要素を含める必要があります。 |
4 |
<detail> これは、アプリケーション固有のエラーメッセージを伝えるために使用される要素です。 詳細要素には、詳細エントリと呼ばれる子要素を含めることができます。 |
SOAP障害コード
以下に定義されているfaultCode値は、_faultcode_要素で障害の説明中に使用する必要があります。
Sr.No | Error & Description |
---|---|
1 |
SOAP-ENV:VersionMismatch SOAP Envelope要素の無効なネームスペースが見つかりました。 |
2 |
SOAP-ENV:MustUnderstand mustUnderstand属性が「1」に設定された、Header要素の直接の子要素が理解されませんでした。 |
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>