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