ページの先頭行へ戻る
Interstage Service Integrator V9.7.0 アプリケーション開発ガイド
FUJITSU Software

6.1.2 HTTPメッセージを操作する

ここでは、HTTPパラメタ伝送によりISIの共通メッセージへマッピングされたHTTPメッセージの情報を参照、加工する方法について説明します。

インバウンドHTTPアダプタで受信したHTTPメッセージは、以下の共通メッセージのヘッダにマッピングされます。また、アウトバウンドHTTPアダプタで送信するHTTPメッセージも、サービスエンドポイントの定義に伝送をする設定を行った場合は、以下のヘッダの値を利用します。

表6.1 HTTPメッセージ送信時のISI共通メッセージのヘッダキー

ISI共通メッセージのヘッダキー

対応するHTTPメッセージの情報

com.fujitsu.esi.http.request.method

HTTPメソッド

com.fujitsu.esi.http.request.resourcepath

リソースパス

com.fujitsu.esi.http.request.header.<HTTPヘッダのfield-name>

HTTPヘッダ

アウトバウンドHTTPアダプタの応答メッセージは、以下の共通メッセージのヘッダにマッピングされます。また、インバウンドHTTPアダプタで応答するHTTPメッセージも、サービスエンドポイントの定義に伝送をする設定を行った場合は、以下のヘッダの値を利用します。

表6.2 HTTPメッセージ応答時のISI共通メッセージのヘッダキー

ISI共通メッセージのヘッダキー

対応するHTTPメッセージの情報

com.fujitsu.esi.http.response.status

ステータスコード

com.fujitsu.esi.http.response.header.<HTTPヘッダのfield-name>

HTTPヘッダ

メディエータファンクションのユーザプログラムでは、上記共通メッセージの情報を参照、加工することができます。

特定の共通メッセージのヘッダを参照、加工する場合は、ユーザプログラムへ受け渡すパラメタの型や復帰値の型に、基本データ型、基本データ型のラッパクラス、String型を指定してください。

複数の共通メッセージのヘッダをまとめて参照、設定する場合や、ヘッダを削除する場合は、共通メッセージをパラメタとして受け渡します。

共通メッセージをパラメタとして受け渡す場合のユーザプログラムについて以下に説明します。

共通メッセージのヘッダキーの定数

ユーザプログラムの作成を容易にするために、ヘッダキーを以下のcom.fujitsu.esi.message.ESIHeaderConstantsクラスのフィールドとして定義されています。

表6.3 ESIHeaderConstantsクラスのヘッダキーのフィールド

ISI共通メッセージのヘッダキー

ESIHeaderConstantsクラスのフィールド名

com.fujitsu.esi.http.request.method

ESI_HEADER_KEY_HTTP_REQUEST_METHOD

com.fujitsu.esi.http.request.resourcepath

ESI_HEADER_KEY_HTTP_REQUEST_RESOURCE_PATH

com.fujitsu.esi.http.request.header

ESI_HEADER_KEY_HTTP_REQUEST_HEADER

com.fujitsu.esi.http.response.status

ESI_HEADER_KEY_HTTP_RESPONSE_STATUS

com.fujitsu.esi.http.response.header

ESI_HEADER_KEY_HTTP_RESPONSE_HEADER

共通メッセージのヘッダの操作インタフェース

共通メッセージのヘッダ情報の取得・設定・削除には、ISIが提供するクラスのメソッドを使用します。提供するメソッド一覧は以下の通りです。

表6.4 com.fujitsu.esi.messageパッケージのクラス

クラス名

メソッド情報

復帰値

メソッド名

説明

ESIMessage

ESIHeader

getHeader()

共通メッセージのヘッダ情報を取得する。

ESIHeader

ESIParameter

getParameter()

ヘッダが持つパラメタ情報を取得する。

ESIParameter

java.lang.String

get(java.lang.String key)

指定したキーに該当するヘッダ情報の値を取得する。キーに該当するヘッダ情報がない場合、nullを返す。

void

put(java.lang.String key, java.lang.String value)

指定したキーに値を設定する。

java.lang.String

remove(java.lang.String key)

指定したキーに該当するヘッダ情報を削除する。キーに該当するヘッダ情報がある場合、キーに関連付けられていた値を返す。キーに該当するヘッダ情報がない場合、nullを返す。

共通メッセージのヘッダ情報の取得

共通メッセージのヘッダ情報を取得する場合、ESIParameter#get()メソッドを使用します。

例えば、ヘッダキー“com.fujitsu.esi.http.response.status”の値を取得するプログラムは以下のようになります。

実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の取得

import com.fujitsu.esi.message.ESIMessage;
import com.fujitsu.esi.message.ESIHeader;
import com.fujitsu.esi.message.ESIParameter;
import com.fujitsu.esi.message.ESIHeaderConstants;
(~略~)
public void referHeader(ESIMessage message) {
    ESIParameter parameter = message.getHeader().getParameter();
    String value = parameter.get(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_RESPONSE_STATUS);

共通メッセージのヘッダ情報の設定

共通メッセージのヘッダ情報を設定する場合、ESIParameter#put()メソッドを使用します。

例えば、ヘッダキー“com.fujitsu.esi.http.request.resourcepath”に値を設定するプログラムは以下のようになります。

実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の設定

import com.fujitsu.esi.message.ESIMessage;
import com.fujitsu.esi.message.ESIHeader;
import com.fujitsu.esi.message.ESIParameter;
import com.fujitsu.esi.message.ESIHeaderConstants;
(~略~)
public ESIMessage updateHeader(ESIMessage message) {
    ESIParameter parameter = message.getHeader().getParameter();
    parameter.put(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_REQUEST_RESOURCE_PATH,"/aaa/bbb/ccc");

共通メッセージのヘッダ情報の削除

共通メッセージのヘッダ情報を削除する場合、ESIParameter#remove()メソッドを使用します。

例えば、ヘッダキー“com.fujitsu.esi.http.request.header.connection”を削除するプログラムは以下のようになります。

実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の削除

import com.fujitsu.esi.message.ESIMessage;
import com.fujitsu.esi.message.ESIHeader;
import com.fujitsu.esi.message.ESIParameter;
import com.fujitsu.esi.message.ESIHeaderConstants;
(~略~)
public ESIMessage deleteHeader(ESIMessage message) {
    ESIParameter parameter = message.getHeader().getParameter();
    parameter.remove(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_REQUEST_HEADER+".connection");