HTTP フローでの作業

このトピックでは、HTTP メッセージ・フローを使用して Web サービスと対話する場合に役立つ情報を提供します。 このトピックは、続く Web サービスのシナリオ セクションと共に読むと便利です。

HTTPS
HTTPS の使用のヘルプについては、SSL 認証のインプリメントを参照してください。
返信用のHTTP 状況コードの設定
デフォルトの HTTP 状況コードは 200 であり、 正常を意味しています。異なる状況コードが戻されるのは、以下のいずれかの場合です。
  • LocalEnvironment のフィールド Destination.HTTP.ReplyStatusCode (相関名 OutputLocalEnvironment) で 状況コードを設定した。これにより、以下のように HTTPResponseHeader で 設定された状況コードがオーバーライドされます。
  • HTTPRequest ノードがフロー内の HTTPReply ノードに先行する場合は、HTTPResponseHeader が 論理ツリーに作成され、別の Web サービスからの応答にある HTTP ヘッダーを 表します。便宜上、HTTPReply ノード・プロパティー「返信または は応答からデフォルト HTTP ヘッダーを生成」が選択されている場合は、 応答メッセージの作成時にこのヘッダーからの値がデフォルトとして 使用され、HTTPResponseHeader のフィールド X-Original-HTTP-Status-Code に 状況コードを設定できます。 HTTPReplyHeader でこのフィールドを設定することもできますが、お勧めする方法は、 上記のように LocalEnvironment を使用する方法です。
LocalEnvironment.Destination.HTTP.RequestIdentifier を使用する
HTTPInput ノードが入力要求メッセージを受け取る場合、 LocalEnvironment フィールドの Destination.HTTP.RequestIdentifier を、 要求を送った Web サービス・クライアントを識別する固有値に設定します。 適切な場合、この値を参照して、他の場所にその値を保管することができます。

例えば、(ブローカーによる既存の Web サービスの呼び出し に示されているように) 既存の WebSphere MQ アプリケーションと 対話するメッセージ・フローのペアを設計する場合、この値を要求フローに保管し、応答フローで復元することにより、その応答を適切なクライアントが受け取ることを保証できます。そうする場合、データを変更してはならず、データを BLOB として保存する必要があります。

HTTPReply ノードは、LocalEnvironment からこの値を抽出し、 特定のクライアントに送られるように、返信をセットアップします。

HTTPInput ノードと HTTPReply ノードの両方が含まれているメッセージ・フローを設計する場合、 値は HTTPInput ノードによって LocalEnvironment 内に設定されますが、 HTTPReply ノードはそれを使用しません。 したがって、メッセージ・フローが同じフローに両方のノードおよび Compute ノードを含んでいる場合、 メッセージ・ツリーのどのコンポーネントが Compute ノード (「Compute モード」プロパティー)によって 入力メッセージから出力メッセージにコピーされるかを指定するとき、LocalEnvironment ツリーを含む必要はありません。

HTTPRequest ノードの URL の動的設定
HTTPRequest ノードでプロパティー「デフォルト Web サービス URL」を設定して、Web サービス要求用の宛先 URL を決定できます。値セットをプロパティーにオーバーライドするために、メッセージ・フロー内の HTTPRequest ノードの前に、 Compute ノードを構成することができます。 LocalEnvironment.Destination.HTTP.RequestURL に URL ストリングを保管する ESQL をコーディングします。これは HTTPRequest ノードによって検索され、ノード・プロパティー値の代わりに使用されます。

Compute ノードにある要求メッセージ (他のすべての設定値をオーバーライドする)の HTTPRequestHeader セクションにある特定のヘッダー X-Original-HTTP-URL で要求 URL も設定することができますが、 このためには LocalEnvironment の内容を使用することをお勧めします。

HTTPReply ノードのための「返信または応答からデフォルト HTTP ヘッダーを生成」の設定
HTTPReply ノードのプロパティー・ダイアログで 「返信または応答からデフォルト HTTP ヘッダーを生成」チェック・ボックスを選択する場合、ノードには Web サービス・クライアントに送られる応答のヘッダーの最小セットが含まれています。
ヘッダーを明示するよう設定する場合、HTTPReplyHeader 内に作成します。 例えば、Compute ノードが XMLNS ドメイン内でメッセージを伝搬し、Content-Type を変更する場合、以下のように実行できます。
CALL CopyMessageHeaders();
SET OutputRoot.HTTPReplyHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;

Content-Type の場合は、MIME ドメインで作業していない限り ContentType プロパティーを使用してこのヘッダーを設定してはいけません。ContentType プロパティーは、MIME 内で使用される Content-Type の値を設定することを特に意図しています。

要求で使用される HTTP ヘッダーの完全セットは、以下のアルゴリズムを使用してヘッダーを選択することで構築されます。
  1. HTTPReplyHeader 内の任意のヘッダーを選択します。
  2. Content-Type ヘッダーが未定義の場合、ContentType プロパティーの空でない値を使用して作成します。
  3. HTTPResponseHeader 内の任意のヘッダーを選択します (HTTPResponsHeader は HTTPRequest ノードからの戻りで伝搬したものです)。
  4. Content-Type ヘッダーが未定義の場合、デフォルト値 text/xml; charset=utf-8 を使用して作成します。
  5. Content-Length ヘッダーを作成または上書きします。
重要: HTTPReply ノードは、「応答からデフォルト HTTP ヘッダーを生成」チェック・ボックスのチェックをクリアにした場合でも、常に Content-Length ヘッダーを再書き込みします。これを行うのは、内容が正しいことを確認するためです。

HTTPReplyHeader セクションが、HTTPReply ノードによって受け取られるメッセージ内に存在し、 HTTPReply ノードの Output ターミナルが接続されている場合、 HTTPReplyHeader セクションは任意の変更された値または追加された値で更新されます。

HTTPRequest ノードのための「入力からデフォルト HTTP ヘッダーを生成」の設定
HTTPRequest ノードのプロパティー・ダイアログで「入力からデフォルト HTTP ヘッダーを生成」チェック・ボックスを選択する場合、ノードには サーバーに送られる要求のヘッダーの最小セットが含まれています。
ヘッダーを明示するよう設定する場合、HTTPRequestHeader 内に作成します。 例えば、Compute ノードが XMLNS ドメイン内でメッセージを伝搬し、Content-Type を変更する場合、以下のように実行できます。
CALL CopyMessageHeaders();
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;
Content-Type の場合は、MIME ドメインで作業していない限り ContentType プロパティーを使用してこのヘッダーを設定してはいけません。ContentType プロパティーは、MIME 内で使用される Content-Type の値を設定することを特に意図しています。
要求で使用される HTTP ヘッダーの完全セットは、以下のアルゴリズムを使用してヘッダーを選択することで構築されます。
  1. 要求 URL か、着信するメッセージの HTTPRequestHeader セクションのどちらかを基にして、Host ヘッダーを設定します。
  2. HTTPRequestHeader 内の任意のヘッダーを選択します。
  3. Content-Type ヘッダーが未定義の場合、ContentType プロパティーの空でない値を使用して作成します。
  4. HTTPInputHeader から任意のヘッダーを選択します (HTTPInputHeader は HTTPInput ノードによって自動的に作成されます)。
  5. Content-Type ヘッダーが未定義の場合、デフォルト値 text/xml; charset=utf-8 を使用して作成します。
  6. SOAPAction ヘッダーが未定義の場合、デフォルト値 '' を使用して作成します。
  7. Content-Length ヘッダーを作成または上書きします。
重要: HTTPRequest ノードは、「入力または応答からデフォルト HTTP ヘッダーを生成」チェック・ボックスのチェックをクリアにした場合でも、常に Content-Length ヘッダーを再書き込みします。これを行うのは、内容が正しいことを確認するためです。

受け取ったメッセージに HTTPRequestHeader が存在する場合、 HTTPRequestHeader は任意の変更された値または追加された値で更新されます。

変更の始まりHTTP に関する問題がある場合の HTTPListener トレースの収集変更の終わり
変更の始まりHTTP に関する問題がある場合には、以下のようにして HTTPListener をトレースできます。
  1. mqsichangetrace コマンドを使用して、トレースを開始します。
  2. mqsireadlog コマンドを使用し、-b パラメーターに HTTPListener 修飾子を指定して、HTTPListener トレース・ログを表示します。
変更の終わり
関連概念
WebSphere MQ Web Services Transport
WSDL の生成
関連タスク
メッセージ・フローの作成
デプロイ
デプロイメントの結果の検査
関連資料
HTTPInput ノード
HTTPReply ノード
HTTPRequest ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac20450_