2.16.3 HTTPリクエストと要求電文の関係
ここでは,HTTPアダプタの要求電文からHTTPリクエストへの変換の仕組みについて説明します。
ビジネスプロセスから渡された要求電文は,HTTPアダプタで次のように分割してHTTPリクエストに変換されます。
-
リクエストライン
-
HTTPリクエストヘッダ
-
HTTPリクエストボディ
HTTPリクエストの設定方法および各項目の詳細について説明します。
なお,ここで説明する電文の例では,名前空間接頭辞を省略しています。
(1) HTTPリクエストの設定方法
(a) 設定個所
HTTPリクエストは,HTTPリクエストの構成要素ごとに,次の場所で設定します。
- ●リクエストライン
-
-
要求電文(ヘッダ)
-
HTTPアダプタ実行環境プロパティファイル
-
HTTPアダプタ実行環境共通プロパティファイル
-
- ●リクエストヘッダ
-
-
要求電文(ヘッダ)
-
HTTPアダプタ実行環境プロパティファイル
-
HTTPアダプタ実行環境共通プロパティファイル
-
- ●リクエストボディ
-
-
要求電文(ボディ)
-
作業フォルダ・共通フォルダ※内のファイル
- 注※
-
共通フォルダの場合,配下のサブフォルダを使用できます。
-
リクエストラインとリクエストヘッダは,上記3つの設定場所の中から任意の場所(単一の場所でも複数の場所の組み合わせでも可能)を使用して設定します。リクエストボディは要求電文(ボディ),または作業フォルダ・共通フォルダ内のファイルを使用して設定します。
|
|
(b) リクエストライン,リクエストヘッダの設定方法
リクエストラインとリクエストヘッダは,要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,HTTPアダプタ実行環境共通プロパティファイルの3つの場所で設定します。複数の場所に設定がある場合は,HTTPアダプタは優先度が高い設定を使用して処理をします。
それぞれの設定場所の優先度は次のとおりです。
|
優先度 |
設定場所 |
|
|---|---|---|
|
高 |
優先度1 |
要求電文(ヘッダ) |
|
| |
優先度2 |
HTTPアダプタ実行環境プロパティファイル |
|
低 |
優先度3 |
HTTPアダプタ実行環境共通プロパティファイル |
HTTPリクエストの設定は,要求電文(ヘッダ)や各プロパティファイルの中のパラメタ(要求電文(ヘッダ)の各要素やプロパティファイルの個々のプロパティ)単位で有効になります。
それぞれの設定場所には,次のような特長があります。システムの要件に合わせてこれらを適切に組み合わせることで,開発工数の削減や運用の容易化を図れます。
|
設定場所 |
特長 |
|---|---|
|
要求電文(ヘッダ) |
HTTPアダプタの実行時に設定できるため,リクエストごとに動的に値を変更する必要があるパラメタの定義に適しています。 (例)リクエストメソッドやURIの指定,など |
|
HTTPアダプタ実行環境プロパティファイル |
HTTPアダプタの1定義ごとに固定のパラメタを設定することができるため,アダプタ開発時(または運用時)に静的に決まるパラメタの設定に適しています。 (例)ファイル受信(ダウンロード)時の出力先フォルダの指定,など |
|
HTTPアダプタ実行環境共通プロパティファイル |
すべてのHTTPアダプタに共通のパラメタを設定することができるため,システム共通の静的なパラメタの設定に適しています。 (例)認証情報やログファイルの出力先の指定,など |
- 設定例
-
具体的な使用例を用いて,HTTPリクエストの設定方法を示します。
-
パターン1(常に固定のHTTPリクエストを発行する場合)
HTTPアダプタから常に固定のHTTPリクエストを発行する場合,最も簡単な設定方法は,実行環境プロパティファイルによるリクエストの設定です。この方法では,HTTPアダプタは自分のサービスIDと同じ名前の実行環境プロパティファイルをアダプタ起動時に読み込み,リクエスト発行の要求があるたびに,実行環境プロパティファイルの内容に基づいてHTTPリクエストを発行します。
図2‒157 HTTPリクエストの設定例(常に固定のHTTPリクエストを発行する場合) -
パターン2(複数のHTTPアダプタの間で一部の設定を共有する場合)
複数のHTTPアダプタの間で一部の設定をシステム共通のパラメタとして共有する場合は,実行環境共通プロパティファイルにシステム共通のパラメタを切り出して設定することが有効です。次の図では,アダプタ1およびアダプタ2に共通のパラメタとしてサービス1に対するWWW認証の認証情報があり,これを実行環境共通プロパティファイルで定義しています。
図2‒158 HTTPリクエストの設定例(複数のHTTPアダプタの間で一部の設定を共有する場合) このような設定方法にすることで,共有するパラメタを重複して定義する必要がなくなるため,開発工数を削減できます。また,共通のパラメタが1つのプロパティファイルで一元管理されるため,設定の確認や変更作業(本例ではサービス1の認証情報の更新に伴うHTTPアダプタの設定変更作業)が容易になります。
-
パターン3(HTTPリクエストの内容を動的に設定する場合)
HTTPリクエストの内容をリクエスト発行時に動的に設定する必要がある場合(ビジネスプロセスの処理状態に応じてリクエストの内容を変更する場合)は,要求電文(ヘッダ)を利用してHTTPリクエストを設定します。次の図では,ビジネスプロセスからアダプタ2に渡す要求電文(ヘッダ)の中にクエリ情報を定義し,HTTPリクエスト発行時にリクエストラインのクエリ情報が動的に生成されるようにしています。
このようなアダプタ実行時にHTTPリクエストの内容を動的に変更する設定は,要求電文(ヘッダ)を使用した場合だけです。
図2‒159 HTTPリクエストの設定例(HTTPリクエストの内容を動的に設定する場合) - 参考
-
優先度が低い設定場所で定義したパラメタは,優先度が高い設定場所で定義したパラメタで値を置き換える(上書きする)ことができます。例えば上記の図では,実行環境共通プロパティファイルを使用してすべてのアダプタのログ出力先を”E:\log”に設定していますが,アダプタ3だけアダプタ固有の実行環境プロパティファイルを使用して,ログ出力先を”F:\log”に変更しています。一部のHTTPアダプタだけ例外的な設定が必要な場合や,一時的に特定のHTTPアダプタだけ動作を変更したいなどの場合には,このような設定方法も使用できます。
-
- 具体的な設定項目や設定方法
-
リクエストラインやリクエストヘッダの具体的な設定項目や設定方法については,「(2) リクエストライン」,および「(3) HTTPリクエストヘッダ」を参照してください。
要求電文(ヘッダ)で設定できる要素の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.13 HTTPアダプタを定義する」を参照してください。
HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルで設定できるプロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.2 HTTPアダプタ実行環境プロパティファイル」を参照してください。
要求電文(ヘッダ)とHTTPアダプタ実行環境(共通)プロパティファイルのパラメタの対応関係については,「2.16.14 要求電文(ヘッダ)とHTTPアダプタ実行環境(共通)プロパティファイルのパラメタの対応関係」を参照してください。
- 注意事項
-
-
実行環境(共通)プロパティファイルについて
HTTPアダプタの起動時に実行環境プロパティファイルやHTTPアダプタ実行環境共通プロパティファイルが所定の場所に配備されていない場合は,HTTPアダプタはそのプロパティファイルを使用しないものとして動作します。
実行環境プロパティファイルと実行環境共通プロパティファイルの両方が配備されていない場合は,HTTPアダプタはこれらのプロパティファイルに対してすべてデフォルト値が指定されたものと仮定して動作します。デフォルト値がないプロパティは未定義状態になるため,必要に応じて,アダプタ実行時に要求電文(ヘッダ)でリクエストの設定を行うようにしてください。
-
要求電文(ヘッダ)について
HTTPアダプタの開発時に要求電文用のヘッダ割当変数の指定を省略した場合は,HTTPアダプタは要求電文(ヘッダ)を使用しないものとして動作します。
HTTPアダプタの開発時に要求電文用のヘッダ割当変数を複数指定した場合は,HTTPアダプタの要求電文(ヘッダ)の名前空間を持つヘッダ割当変数が使用されます。
HTTPアダプタの開発時にHTTPアダプタの要求電文(ヘッダ)の名前空間を持つヘッダ割当変数を複数指定した場合は,実行時にどのヘッダ割当変数が使用されるかは不定です。
-
その他全般
複数の設定場所を使用することでシステムの開発や運用を効率化できます。しかし,必要以上に設定の階層化や複雑化をすると,実行時にどの設定場所のパラメタが使用されるか,理解することが難しくなります。最初にシステムの構成や運用業務の分析を行った上で,適切な効果が得られるように設計や開発を行ってください。
-
(c) リクエストボディの設定方法
リクエストボディは,リクエストボディに格納するデータと,データ送信種別(データの格納方法)のペアで指定します。それぞれ,次の場所で設定します。
- ●格納するデータ
-
要求電文(ボディ),または作業フォルダ・共通フォルダ※内のファイル
- 注※
-
共通フォルダの場合,配下のサブフォルダを使用できます。
- ●データ送信種別
-
要求電文(ヘッダ)やHTTPアダプタ実行環境(共通)プロパティファイル
データ送信種別に応じて,要求電文(ボディ),または作業フォルダ・共通フォルダ内のファイルが適切な形に変換された上でリクエストボディに格納され,リクエストとして発行されます。リクエストボディを発行する際の設定イメージを次に示します。
具体的な設定項目や設定方法については,「(4) HTTPリクエストボディ」を参照してください。
要求電文(ボディ)で設定できる要素の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.13 HTTPアダプタを定義する」を参照してください。
(2) リクエストライン
HTTPリクエストの先頭行に記述するリクエストラインは次の形式で送信されます。
HTTPメソッド△URI△プロトコル※
- (凡例)
-
△:半角スペースです。
- 注※
-
プロトコルは「HTTP/1.1」で固定です。
HTTPメソッドおよびURIの指定方法について説明します。
(a) HTTPメソッド
リクエストラインのHTTPメソッドは,要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルに指定します。
HTTPメソッドの指定個所を次に示します。
|
指定方法 |
項目 |
指定個所 |
|---|---|---|
|
要求電文(ヘッダ) |
HTTPメソッド |
method要素 |
|
HTTPアダプタ実行環境プロパティファイル,HTTPアダプタ実行環境共通プロパティファイル |
HTTPメソッド |
adphttp.request.methodプロパティ |
- 注意事項
-
次のメソッドはHTTPリクエストボディを指定できません。
-
GET
-
DELETE
-
HEAD
-
OPTIONS
これらのメソッドを使用するときは,必ずデータ種別を「データなし」にしてください。HTTPリクエストボディのデータ種別については,「(4)(a) データ種別」を参照してください。
-
要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルのどれにもHTTPメソッドが指定されなかった場合はエラーになります。
(b) URI
リクエストラインのURIは,スキーム・オーソリティ部分,パス部分,クエリ部分に分割して,要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルに指定します。
URIの指定個所を次に示します。
|
指定方法 |
項目 |
指定個所 |
|---|---|---|
|
要求電文(ヘッダ) |
スキーム・オーソリティ |
uri-scheme-authority要素 |
|
パス |
uri-path要素 |
|
|
クエリ |
uri-query要素 |
|
|
HTTPアダプタ実行環境プロパティファイル,HTTPアダプタ実行環境共通プロパティファイル |
スキーム・オーソリティ |
adphttp.request.uri-scheme-authorityプロパティ |
|
パス |
adphttp.request.uri-pathプロパティ |
|
|
クエリ |
adphttp.request.uri-query.<追番>プロパティ |
要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルのどれにもスキーム・オーソリティとパスが指定されなかった場合はエラーになります。
スキーム・オーソリティのスキーム部分に「https」を指定した場合,HTTPSを使用して通信します。ただし,HTTPSを使用するには設定が必要です。詳細は,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「付録I HTTPアダプタで必要なセキュリティの設定」を参照してください。
URIの指定例を次に示します。どちらの場合も生成されるURIは「http://localhost:80/test/selectdata?name=sample&id=001」です。
-
要求電文(ヘッダ)で指定した場合
<http-header-request> <uri-scheme-authority>http://localhost:80</uri-scheme-authority> <uri-path>/test/selectdata</uri-path> <uri-query> <name>sample</name> <id>001</id> </uri-query> </http-header-request> -
HTTPアダプタ実行環境プロパティファイルで指定した場合
adphttp.request.uri-scheme-authority=http://localhost:80 adphttp.request.uri-path=/test/selectdata adphttp.request.uri-query.1=name=sample adphttp.request.uri-query.2=id=001
- 参考
-
スキーム・オーソリティ部分,パス部分,クエリ部分は独立して指定できます。このため,スキーム・オーソリティ部分をHTTPアダプタ実行環境プロパティファイルに指定して,パス部分とクエリ部分を要求電文(ヘッダ)で指定することで,HTTPリクエストの宛先を動的に変更することもできます。
- 注意事項
-
スキーム・オーソリティ部分とパス部分とクエリ部分には,それぞれに適切な値を設定してください。パス部分にスキーム・オーソリティやクエリを指定した場合など,不適切な値を指定した場合は動作を保証しません。
(c) クエリ
URIのクエリ部分は,要求電文(ヘッダ)に内包されるクエリ用詳細電文フォーマットをカスタマイズして指定できます。
クエリの指定例を次に示します。
-
クエリ用詳細電文フォーマットのカスタマイズの例
(変更前)
<xsd:complexType name="uri-query-type"> <xsd:sequence> <xsd:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="1024" /> </xsd:sequence> </xsd:complexType>(変更後)
<xsd:complexType name="uri-query-type"> <xsd:sequence> <xsd:element name="parameter1" type="xsd:string" minOccurs="0"/> <xsd:element name="parameter2" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType>この例では,xsd:any型の要素を,クエリ名をローカル名とするxsd:string型の要素に変更しています。また,出現回数の指定は任意です。
-
要求電文(ヘッダ)の指定例
<http-header-request> <uri-scheme-authority>http://localhost:80</uri-scheme-authority> <uri-path>/test/selectdata</uri-path> <uri-query> <parameter1>value1</parameter1> <parameter2>value2</parameter2> </uri-query> </http-header-request> -
生成されるクエリ
http://localhost:80/test/selectdata?parameter1=value1¶meter2=value2
- 注意事項
-
-
uri-query要素直下に指定した値だけ有効になり,属性を指定しても無視されます。
-
階層構造を持つ要素を指定した場合,その要素が生成するクエリの値については保証しません。
-
同一のキー名を複数定義した場合の出現順は保証しません。
-
「http://user:password@example.jp:80/httprcp1/op1」のように,URIにベーシック認証のアカウント情報が含まれていても,ベーシック認証情報として使用されません。
-
要求電文(ヘッダ)でクエリを指定する場合,クエリのキー名称にはNCNameとして不正な文字を使用できません。
-
(3) HTTPリクエストヘッダ
要求電文(ヘッダ)のhttp-header要素の直下に,ヘッダフィールド名を要素名,フィールド値を要素値とした形式で要求電文を生成します。要素名はローカル名の部分だけ使用するため,任意の名前空間を指定できます。要求電文中のhttp-header要素を表すスキーマは,ユーザが変更できます。http-header要素の直下の値だけが有効となり,属性の指定は無視されます。階層構造を持つ要素を指定した場合,その要素が生成するクエリの値については保証しません。
要求電文(ヘッダ)がない場合,HTTPアダプタ実行環境プロパティファイル(またはHTTPアダプタ実行環境共通プロパティファイル)が参照されます。HTTPアダプタ実行環境プロパティファイルで指定したヘッダが要求電文(ヘッダ)の指定に追加されることはありません。
any型の要素を,ヘッダ名をローカル名とするstring型の要素に変更するスキーマの修正例を次に示します。
-
スキーマの修正例
(変更前)
<xsd:complexType name="http-header-type"> <xsd:sequence> <xsd:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="1024" /> </xsd:sequence> </xsd:complexType>(変更後)
<xsd:complexType name="http-header-type"> <xsd:sequence> <xsd:element name="cache-control" type="xsd:string" minOccurs="0"/> <xsd:element name="host" type="xsd:string" minOccurs="0"/> <xsd:element name="accept-language" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType>なお,出現回数の指定は,任意に設定できます。
-
インスタンス例
<http-header-request> <http-header> <cache-control>no-cache</cache-control> <host>localhost</host> <accept-language>ja</accept-language> </http-header> </http-header-request> -
送信されるHTTPヘッダ
cache-control: no-cache host: localhost accept-language: ja
(a) HTTPヘッダの指定例
HTTPヘッダの指定例を次に示します。
-
要求電文(ヘッダ)の指定例
<http-header-request> <http-header> <X-PRIORITY>HIGH</X-PRIORITY> <X-DOCUMENT-ID>12345-67890</X-DOCUMENT-ID> </http-header> </http-header-request> -
HTTPアダプタ実行環境プロパティファイルの指定例
adphttp.request.header.userdef.1=X-PRIORITY:HIGH adphttp.request.header.userdef.2=X-DOCUMENT-ID:12345-67890
-
生成されるHTTPリクエストヘッダ
X-PRIORITY:HIGH X-DOCUMENT-ID:12345-67890
(b) 特殊なHTTPヘッダの指定
次に示すHTTPヘッダは,要求電文(ヘッダ)のhttp-header要素,およびHTTPアダプタ実行環境プロパティファイル(またはHTTPアダプタ実行環境共通プロパティファイル)のadphttp.request.header.userdef.<追番>プロパティに指定しても無視されます。
|
ヘッダフィールド名 |
説明 |
|---|---|
|
Content-Type |
次の個所で指定します。
フォームデータ送信の場合はapplication/x-www-form-urlencoded固定,複数ファイルデータ送信の場合はmultipart/form-data固定となります。 |
|
Cookie |
次の個所で指定します。
詳細は,「2.16.5 HTTPアダプタを使用したCookie情報の引き継ぎ」を参照してください。 |
|
Proxy-Authorization |
プロキシサーバへの接続に使用するProxy-AuthorizationヘッダはJavaVMのシステムプロパティで設定します。 詳細は,「2.16.6 プロキシサーバを経由した通信」を参照してください。 |
|
Connection |
Connection: Keep-Aliveなど,コネクション制御に関するヘッダはJavaVMのシステムプロパティで設定します。詳細は,「2.16.7 コネクション継続(Keep-Alive)を使用した通信」を参照してください。 |
|
Content-Length |
HTTPアダプタが自動的に設定します。 |
|
Accept-Encoding |
HTTPアダプタが自動的に設定します。 |
|
Authorization |
次の個所で指定します。
詳細は,「2.16.16 WWW認証を使用したセキュアな接続」を参照してください。 |
|
Content-Disposition |
Content-Dispositionヘッダには,nameおよびfilename属性だけ指定してください。 複数のファイルデータを送信する場合,Content-Dispositionヘッダに送信するリソースのファイル名を指定します。 HTTPアダプタでは,次の形式でメッセージを作成します。 Content-Disposition: <Dispositionタイプ>; name=<パートID>; filename=<ファイル名> 詳細は,「2.15.5(2)(b) Content-Disposition」を参照してください。 |
(c) 注意事項
HTTPヘッダ指定時の注意事項を次に示します。
-
http-header要素に指定した値は,http-header要素直下の値だけ有効になり,属性を指定しても無視されます。
-
http-header要素に階層構造を持つ要素を指定した場合,その要素が生成するヘッダの値については保証しません。
-
http-header要素直下のリクエストヘッダは1,024個まで指定できます。1,025以上の要素を指定した場合は動作を保証しません。
-
http-header要素でHTTPヘッダを指定する場合,ヘッダフィールド名にはNCNameとして不正な文字を使用できません。
-
HTTPアダプタではHTTPヘッダの記述順を保証しません。また,同名のヘッダフィールドが複数あった場合,そのままHTTPリクエストに設定されます。
-
要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,またはHTTPアダプタ実行環境共通プロパティファイルのどれにもHTTPヘッダおよびContent-Typeヘッダを指定しなかった場合,送信内容に応じて自動的にContent-Typeヘッダが付与される場合があります。
-
拡張ヘッダ以外のヘッダフィールド名を指定した場合の動作は保証されません。拡張ヘッダ以外のヘッダフィールド名を指定する場合は,十分に動作検証をした上で利用してください。
(4) HTTPリクエストボディ
(a) データ種別
HTTPリクエストボディで送信するデータ種別は次の中から選択できます。
-
フォームデータ(ノーマルモード)
要求電文(ボディ)に指定したデータをフォームデータに変換して,HTTPリクエストボディに設定します。
-
要求電文(ボディ)(パススルーモード)
要求電文(ボディ)で指定したデータをそのままHTTPリクエストボディに設定します。
-
単一ファイルのファイルデータ送信(単一パート型)
ファイルの内容がHTTPリクエストボディに設定されます。
-
複数ファイルのファイルデータ送信(マルチパート型)
複数のファイルのデータをマルチパート型で送信できます。マルチパートの一部に要求電文(ボディ)を組み合わせることもできます。
-
データなし
HTTPリクエストボディが設定されません。GETメソッドなど,HTTPリクエストボディを送信しない場合に選択します。
HTTPリクエストボディのデータ種別は,要求電文(ヘッダ)のbinding要素,およびHTTPアダプタ実行環境プロパティファイル(またはHTTPアダプタ実行環境共通プロパティファイル)のadphttp.request.part.message.bindingプロパティで指定できます。
ただし,要求電文(ヘッダ)にfiles要素が存在する場合は,上記の要素(またはプロパティ)が指定されていてもファイルデータとして扱われます。同様に,HTTPアダプタ実行環境プロパティファイル(またはHTTPアダプタ実行環境共通プロパティファイル)のadphttp.request.part.file.<追番>.input-folder-nameプロパティが存在する場合は,adphttp.request.part.message.bindingプロパティが指定されていてもファイルデータとして扱われます。
(b) フォームデータ(ノーマルモード)
ノーマルモードでフォームデータを送信する場合,サービスプラットフォームが提供するフォームデータ用電文フォーマットをカスタマイズして指定します。
フォームデータの指定例を次に示します。
-
フォームデータ用電文フォーマットのカスタマイズの例
(変更前)
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType>(変更後)
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="parameter1" type="xsd:string" minOccurs="0"/> <xsd:element name="parameter2" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> -
要求電文(ボディ)の指定例
<http-body-form-data> <parameter1>value1<parameter1> <parameter2>value2<parameter2> </http-body-form-data> -
生成されるHTTPリクエストヘッダおよびリクエストボディ
Content-Type: application/x-www-form-urlencoded parameter1=value1¶meter2=value2
指定したフォームデータはURLエンコードされます。デフォルトの文字コードはUTF-8です。
- 注意事項
-
-
http-body-formdata要素に指定した値は,http-body-formdata要素直下の値だけ有効になり,属性を指定しても無視されます。
-
http-body-formdata要素に階層構造を持つ要素を指定した場合,その要素が生成するフォームデータの値については保証しません。
-
HTTPアダプタではフォームデータの出現順を保証しません。フォームデータの出現順は要求電文(ボディ)の指定順と必ずしも一致するとは限りません。
-
http-body-formdata要素に指定した値はContent-Typeヘッダのcharset属性に指定した文字コードでURLエンコードされます。このため,必ずURLエンコードをする前の形式で指定してください。
-
http-body-formdata要素でフォームデータを指定する場合,フォームデータのキー名称にはNCNameとして不正な文字を使用できません。
-
(c) 要求電文(ボディ)(パススルーモード)
パススルーモードで要求電文(ボディ)で指定したデータをそのままHTTPリクエストボディに設定する場合,送信するHTTPリクエストボディの形式に合わせて要求電文(ボディ)の電文フォーマットを作成します。
(d) 単一ファイルのファイルデータ送信(単一パート型)
作業フォルダまたは共通フォルダ内の1ファイルを対象のサーバに送信できます。
複数ファイルを送信する場合は,「(e) 複数ファイルのファイルデータ送信(マルチパート型)」を参照してください。
作業フォルダとは,HTTP受付またはFTP受付がリクエストごとにHCSCサーバ内に作成する一時フォルダです。作業フォルダは,作成した受付から呼び出されたビジネスプロセス以外からは参照できません。
共通フォルダとは,システム構築時にユーザが作成する任意のフォルダです。複数のビジネスプロセスで共通して利用するファイルを格納することができます。また,共通フォルダの場合,配下のサブフォルダを使用できます。
ファイルデータを送信する場合,要求電文(ヘッダ),およびHTTPアダプタ実行環境プロパティファイル(またはHTTPアダプタ実行環境共通プロパティファイル)でファイルデータに関する情報を指定します。プロパティファイルで指定する場合は共通フォルダだけ使用できます。
ファイルデータの指定個所を次に示します。
|
指定方法 |
項目 |
指定個所 |
|---|---|---|
|
要求電文(ヘッダ) |
作業フォルダのリクエストID |
request-id要素 |
|
パート型※1 |
http-body要素内のstyle要素 |
|
|
使用するフォルダ |
input-folder-name要素のcommon属性 |
|
|
共通フォルダ定義名 |
input-folder-name要素 |
|
|
送信対象のファイル名※ |
local-file-name要素 |
|
|
送信データのContent-Typeヘッダフィールドのメディアタイプ |
http-header-Content-Type要素 |
|
|
送信データのContent-Typeヘッダフィールドの文字コード属性 |
http-header-Content-Type要素のcharset属性 |
|
|
HTTPアダプタ実行環境プロパティファイル,HTTPアダプタ実行環境共通プロパティファイル |
作業フォルダのリクエストID |
− |
|
ファイルデータ数 |
− |
|
|
使用するフォルダ |
− |
|
|
共通フォルダ定義名 |
adphttp.request.part.file.<追番>.input-folder-name※2 |
|
|
送信対象のファイル名※3 |
adphttp.request.part.file.<追番>.local-file-name※2 |
|
|
送信データのContent-Typeヘッダフィールドのメディアタイプ |
adphttp.request.header.content-type |
|
|
送信データのContent-Typeヘッダフィールドの文字コード属性 |
adphttp.request.header.content-type.charset |
- (凡例)
-
−:該当する指定個所はありません。
- 注※1
-
単一のファイルデータを送信する場合は,省略または「single」を指定します。
- 注※2
-
1以外の<追番>のプロパティが指定されている場合,該当するプロパティが解析されます。ただし,リクエスト時には<追番>が1のプロパティがファイルデータとして使用されます。
- 注※3
-
サブフォルダを使用する場合,共通フォルダルートからファイル名までの相対パスを指定してください。
単一ファイルのデータ送信の例を次に示します。
|
|
ファイルデータを送信する場合,HTTPアダプタに渡された要求電文(ボディ)の値は無視されます。このため,指定する要求電文(ボディ)の電文フォーマットには,空のボディデータを格納するためのファイルデータ用電文フォーマットを使用します。
- 注意事項
-
-
要求電文(ヘッダ)でfiles要素だけ指定して下位のfile要素を1つも指定しなかった場合,HTTPリクエストボディが空の状態でHTTPリクエストが送信されます。
-
/http-header-request/http-part/files/file要素が複数回出現した場合,すべてのfile要素が解析されます。ただし,リクエスト時には最初に出現した要素の値をファイルデータとして使用されます。
-
ファイルデータを送信する場合,読み込み対象のファイルが格納されたフォルダまたはファイルの指定がない場合や,指定されたフォルダおよびファイルが存在しない場合はエラーとなります。
-
次に,共通フォルダのサブフォルダを使用して,HTTPリクエストでファイルを送信する場合の指定例を示します。
HTTPアダプタ要求電文(ヘッダ)の/http-header-request/http-part/files/file/local-file-name,またはHTTPアダプタ実行環境プロパティファイルのadphttp.request.part.file.<追番>.local-file-nameに共通フォルダルートからファイル名までの相対パスを指定します。
-
要求電文(ヘッダ)指定例
<http-header-request> : <input-folder-name common="true">com</input-folder-name> <local-file-name>/folder1/folder2/file1.doc</local-file-name> : </http-header-request> -
HTTPアダプタ実行環境(共通)プロパティファイルの指定例
adphttp.request.part.file.<追番>.input-folder-name=com adphttp.request.part.file.<追番>.local-file-name=/folder1/folder2/file1.doc
(e) 複数ファイルのファイルデータ送信(マルチパート型)
作業フォルダまたは共通フォルダ内の複数のファイルを,マルチパート型の一部としてリクエストボディに設定し,対象のサーバに送信できます。
送信するファイルデータの情報は,要求電文(ヘッダ),またはHTTPアダプタ実行環境(共通)プロパティファイルで指定します。
- 注意事項
-
複数ファイルのファイルデータを送信する場合,パートが1つ以上設定されている必要があります。パートが設定されていない場合,エラーメッセージが出力され,リクエストに失敗します。
- 要求電文(ヘッダ)での複数ファイルデータの指定
-
要求電文(ボディ)をマルチパート型の1パートとして扱います。要求電文(ボディ)をマルチパート型の1パートとして扱う場合,要求電文(ボディ)リクエストボディへのバインド方法(adphttp.request.part.message.bindingプロパティ)には「raw」を指定します。「raw」以外を指定した場合,要求電文(ボディ)はマルチパート型の1パートとして扱われません。ファイルデータだけを送信したいときは,ボディ要求電文の割当変数に,製品が提供する空データ用フォーマットを指定します。
また,/http-header-request/http-part/files/file要素ごとにファイル単位で,共通フォルダと作業フォルダのそれぞれに格納したファイルを指定できます。
表2‒89 複数ファイルデータの指定方法(要求電文(ヘッダ)) 項目
指定個所
説明
作業フォルダのリクエストID
/http-header-request/request-id
作業フォルダ用のリクエストIDを設定します。作業フォルダを使用しない場合は,省略できます。
HTTPボディのパート型
/http-header-request/http-body/style
HTTPボディの型を指定します。マルチパート型の場合は,「multipart/form-data」を指定します。
Content-Dispositionヘッダのパート名
/http-header-request/http-part/message/part-id
要求電文(ボディ)をマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Dispositionヘッダのname属性の値を指定します。
「csc_http_adapter_telegram_name」で始まる値は,設定できません。設定した場合の動作は保証されません。
次のすべての条件に当てはまる場合に,この要素値に「csc_http_adapter_telegram_name_1」が指定されたと見なします。
-
リクエストボディのパート形式が「multipart/form-data」である
-
要求電文(ボディ)のリクエストボディへのバインド方法(adphttp.request.part.message.bindingプロパティ)が「raw」である
-
この要素およびHTTPアダプタ実行環境プロパティファイルに,「adphttp.request.part.message.part-id」が設定されていない
Content-Typeヘッダの文字コード属性
/http-header-request/http-part/message/Content-Type/@charset
要求電文(ボディ)をマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Typeヘッダのcharset属性の値を指定します。
Content-Typeヘッダのメディアタイプ
/http-header-request/http-part/message/Content-Type
要求電文(ボディ)をマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Typeヘッダのメディアタイプを指定します。
Content-Dispositionヘッダの送信対象のファイル名
/http-header-request/http-part/files/file/part-id
送信対象ファイルをマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Dispositionヘッダのname属性の値を指定します。
「csc_http_adapter_file_name」で始まる値は設定できません。設定した場合の動作は保証されません。
次のすべての条件に当てはまる場合に,この要素値に「csc_http_adapter_file_name_<1から始まる連番>」が設定されたと見なします。連番は製品内で採番されます。
-
リクエストボディのパート形式が「multipart/form-data」である
-
要求電文(ヘッダ)の「/http-header-request/http-part/files/file」要素が出現する
-
要求電文(ヘッダ)の「/http-header-request/http-part/files/file/part-id」要素がない,または空要素である
使用するフォルダ
/http-header-request/http-part/files/file/input-folder-name/@common
共通フォルダを使うか,作業フォルダを使うかを指定します。
true:共通フォルダを使用する。
false:作業フォルダを使用する。
共通フォルダ論理名
/http-header-request/http-part/files/file/input-folder-name
共通フォルダを使う場合の共通フォルダ論理名を指定します。
送信対象のファイル名
/http-header-request/http-part/files/file/local-file-name
送信対象のファイル名を指定します。
共通フォルダの場合,共通フォルダルート配下のファイル名を指定します。作業フォルダの場合,作業フォルダ直下のファイル名を指定します。
Content-Dispositionヘッダの送信対象のファイル名
/http-header-request/http-part/files/file/file-name
送信対象ファイルをマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Dispositionヘッダのfilename属性の値を指定します。
Content-Typeヘッダの文字コード属性
/http-header-request/http-part/files/file/Content-Type/@charset
送信対象ファイルをマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Typeヘッダのcharset属性の値を指定します。
Content-Typeヘッダメディアタイプ
/http-header-request/http-part/files/file/Content-Type
送信対象ファイルをマルチパート型の1パートとして扱う場合,該当するパートに設定するContent-Typeヘッダのメディアタイプを指定します。
送信データのContent-Typeヘッダフィールドのメディアタイプ
/http-header-request/http-header-Content-Type
送信データのContent-Typeヘッダフィールドのメディアタイプを指定します。
送信データのContent-Typeヘッダフィールドの文字コード属性
/http-header-request/http-header-Content-Type/@charset
送信データのContent-Typeヘッダフィールドのcharset属性値を指定します。
-
- HTTPアダプタ実行環境(共通)プロパティファイルでの複数ファイルデータの指定
-
HTTPアダプタ実行環境(共通)プロパティファイルで指定する際に使用するプロパティを次に示します。
表2‒90 複数ファイルデータの指定方法(HTTPアダプタ実行環境(共通)プロパティファイル) 項目
指定個所
説明
リクエストボディのパート型
adphttp.request.body.style
リクエストボディのパート型を指定します。
リクエストボディのパートID
adphttp.request.part.message.part-id
リクエストボディのパートに付与するIDを指定します。
各パートのヘッダのContent-Dispositionのnameパラメタの値として使用します。
「csc_http_adapter_telegram_name」で始まる値は,設定できません。設定した場合の動作は保証されません。
次のすべての条件に当てはまる場合,この定義値に「csc_http_adapter_telegram_name_1」が指定され,「adphttp.request.part.message.part-id」の値に設定されたと見なされます。
-
リクエストボディのパート形式が「multipart/form-data」である
-
要求電文(ボディ)のリクエストボディへのバインド方法(adphttp.request.part.message.bindingプロパティ)が「raw」である
-
この定義が設定されていない
リクエストボディのContent-Typeの文字コード
adphttp.request.part.message.content-type.charset
リクエストボディのパートのContent-Typeの文字コードを指定します。
各パートのヘッダのContent-Typeのcharsetパラメタとして使用します。
リクエストボディのContent-Typeの値
adphttp.request.part.message.content-type
リクエストボディのパートのContent-Typeの値を指定します。
各パートのヘッダのContent-Typeの値として使用します。
ファイルのパートID
adphttp.request.part.file.<追番>.part-id※
ファイルのパートに付与するIDを指定します。
マルチパート形式時に各パートのヘッダのContent-Dispositionのnameパラメタの値として使用します。
「csc_http_adapter_file_name」で始まる値は,設定できません。設定した場合の動作は保証されません。
次のすべての条件に当てはまる場合,この定義値に「csc_http_adapter_file_name_<1から始まる連番>」が設定されたと見なされます。連番は製品内で採番されます。
-
「adphttp.request.body.style」の値に「multipart/form-data」を指定した
-
「adphttp.request.part.file.<追番>.input-folder-name」または「adphttp.request.part.file.<追番>.input-folder-name」が設定されている
-
「adphttp.request.part.file.<追番>.part-id」が未定義,または未設定
共通フォルダ論理名
adphttp.request.part.file.<追番>.input-folder-name※
共通フォルダ論理名を指定します。
送信対象のファイル名
adphttp.request.part.file.<追番>.local-file-name※
送信対象のファイル名を指定します。
共通フォルダルート配下のファイル名を指定する。
送信時のファイル名
adphttp.request.part.file.<追番>.file-name※
送信時のファイルの名称を指定します。
各パートのヘッダのContent-Dispositionのfilenameパラメタの値として使用します。
ファイルのContent-Typeの文字コード
adphttp.request.part.file.<追番>.content-type.charset※
ファイルのパートのContent-Typeの文字コードを指定します。
各パートのヘッダのContent-Typeのcharsetパラメタとして使用します。
ファイルのContent-Typeの値
adphttp.request.part.file.<追番>.content-type※
ファイルのパートのContent-Typeの値を指定します。
各パートのヘッダのContent-Typeの値として使用します。
送信データのContent-Typeヘッダフィールドのメディアタイプ
adphttp.request.header.content-type
送信データのContent-Typeヘッダフィールドのメディアタイプを指定します。
送信データのContent-Typeヘッダフィールドの文字コード属性
adphttp.request.header.content-type.charset
送信データのContent-Typeヘッダフィールドのcharset属性値を指定します。
- 注※
-
<追番>は1から始まる連番です。連番は次の規則で設定されます。
・数値の前に0は付けない(001など)。
・連続しない数でもよい(例:1,3,5)。
・プロパティキーの一意性を示す。参照順は関係しない。
・プロパティの組で,<追番>は同一の値となる。
-
- 複数ファイルのデータ送信の例
-
共通フォルダを使用した場合の複数ファイルのデータ送信の例を次に示します。
図2‒161 複数ファイルのデータ送信の例(共通フォルダを使用する場合)