HTTP レスポンスを条件付きで処理する方法

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  Web サービスの呼び出し > Web サービス呼び出しの追加 (REST-スタイル) >

HTTP レスポンスを条件付きで処理する方法

Accept HTTP リクエストヘッダーの値に従い Web サービスがレスポンスボディに JSON または XML コンテンツ型を返すと仮定します。 更に、 エラーの場合、 (ステータスコード > 299)  Web サービスは、定義されていないコンテンツ型を返す場合があります。これは HTTP ステータスコードとコンテンツ型をベースに条件付きでレスポンスを扱う場合に特に役に立ちます。

 

JSON と XML レスポンスを同じマッピング内の Web サービスから処理するには、複数のボディアイテムを作成し、コンポーネント上のボディを右クリックし、コンテキストメニューから 「ボディノードを後に追加する」を選択します。

 

マッピングでは、上記のシナリオのために構成されている複数の ボディ アイテムを持つWeb サービスコンポーネントは以下のようになります:

mf_ws_conditional_body_04

上で説明されるマッピングは、2つのパラメーターを取ります。最初のパラメーターは期待されるコンテンツ型を提供し、値は application/json または application/xml であることができます。2番目のパラメータは取得される製品の数値 ID を提供します。

 

application/json を入力パラメーターとして提供すると、JSON ターゲットコンポーネントの プレビュー ic-preview-buttondown ボタンをクリックします。それ以外の場合、入力パラメータの値は application/xml になり、 XML ターゲットコンポーネントの プレビュー ic-preview-buttondown ボタンをクリックします。Web サービスの呼び出しが成功すると、対応する出力ファイル (JSON または XML) が生成されます。

 

Web サービスの呼び出しが 300 (エラー)より大きいステータスコードを返す場合、 HTTP レスポンスは、3番目の ボディ アイテムに達成します。コンテンツの正確な型が既知ではないため、 decode-mime-entity 関数を使用してデコードします。 The Web サービスはレスポンスヘッダー内の文字列セット値を適用しません。このため、定数の値 utf-8 がデコード関数に接続されています。

 

各ボディの横にある excel1-compicon ボタンをクリックしてコンポーネント上の3つのレスポンスボディアイテムを構成することができます:

 

1.ステータスコードが 200 から 299 の場合、最初のボディは返されたコンテンツを application/json として処理します。 期待される JSON レスポンス構造が設定されます。

mf_ws_conditional_body_01

2.ステータスコードが 200 から 299 の場合、2番目のボディは現在のコンテンツを application/xml として処理します。また、期待される XML レスポンス構造のスキーマが設定されます。

mf_ws_conditional_body_02

3.Web サービスがエラーのステータスコード (300 と 599 の間)を返す場合、3番目のボディは */* として返されたコンテンツを処理します。

mf_ws_conditional_body_03


(C) 2019 Altova GmbH