質問

新しいウェブサービスを開発しており、「ベストプラクティス」を検討しています。 soap応答でエラーを返すため。

すべての応答がプロパティとして含まれるエラー応答オブジェクトの作成を検討していました。しかし、これは少し重いようで、SOAPヘッダーを使用してこの情報を伝達できるかどうか疑問に思っていますか?通常、SOAPを使用してカスタムエラーをどのように処理しますか?

役に立ちましたか?

解決

SOAPFaultはエラーおよびステータス情報を保持するために使用され、サーバーはHTTPヘッダーで500を返し、フォールトとしてそれを示します。

W3.orgの仕様を参照

http://www.w3.org/TR/ 2000 / NOTE-SOAP-20000508 /#_ Toc478383507

サードパーティ向けに明確に文書化する限り、SOAPヘッダーに入れるか、返される結果の要素内に入れることで、独自の情報トークンを設計できます。ただし、これはエラーを発生させる標準的な方法ではありません。

他のヒント

Soapは既にエラー情報にカスタムヘッダーを使用しているため、サーバー側で例外をスローするだけで、クライアント側で SoapException

例外メッセージ/情報をさらに制御したい場合は、サーバーサイドでSoapExceptionをスローできます。

編集: リクエストと一緒に追加情報を取得するには、カスタムSOAPヘッダーを使用できます。以下は、認証にカスタムSOAPヘッダーを使用した CodeProjectのサンプル記事です。 soapヘッダーは、必ずしもエラー状態ではない追加の情報(ビジネスロジック情報の場合もあります)の送信など、他の目的に使用できます

これまで、複雑な操作に対して同様の手法を使用してきました。特に(複数?)エラーの説明とエラーコードが必要な場合。

SOAPヘッダーは帯域外情報用であり、エラーメッセージには使用しないでください。さらに、SOAP応答でSOAPヘッダーを使用しないでください:

  • mustUnderstandが存在しないか0の場合、クライアントはそれらを安全に無視できます。
  • mustUnderstandが1の場合、クライアントは(応答であるため)理解できないことを通知できません。

そして、はい、いくつかのWS- *標準は応答でsoapヘッダーを記述していることを知っています...

だから、

応答オブジェクトが存在しないほど深刻なエラーには、soapフォールトを使用します。 警告および情報メッセージの応答にステータストークンを追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top