このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:「インターネットと XML」
REQUEST DOCUMENT
ステートメントは、外部システムにアクセスする方法を提供します。『プログラミングガイド』の「インターネットおよび XML アクセス用のステートメント」を参照してください。
Unicode サポートの詳細については、『Unicode およびコードページのサポート』ドキュメントの「ステートメント」を参照してください。
技術的な理由で、HTTPS は z/OS でのみサポートされています。
HTTP プロトコル下では、クライアントワークステーションの状況についての情報を維持するために、サーバーはクッキーを使用します。
REQUEST DOCUMENT
は、インターネットオプション設定を使用して実装されます。 これは、セキュリティ設定に依存してクッキーが使用されることを意味しています。
インターネットオプション設定 Disabled
(使用不可)が設定されている場合、クッキーヘッダー(operand 4/5)が送信されても、クッキーは送信されません。
サーバー環境に対して、インターネットオプション設定 Prompt
を使用しないでください。 クライアントはプロンプトに答えることができないため、この設定によりサーバーが "ハングアップ" します。
メインフレーム環境ではクッキーはサポートされていないため、無視されます。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 不可 | 可 | ||||||||||||||
operand2 | C | S | A | 不可 | 可 | ||||||||||||||
operand3 | C | S | A | 不可 | 可 | ||||||||||||||
operand4 | C | S | A | 不可 | 可 | ||||||||||||||
operand5 | C | S | A | N | P | I | F | D | T | L | 不可 | 可 | |||||||
operand6 | C | S | A | U | N | P | I | F | B | D | T | L | 不可 | 可 | |||||
operand7 | C | S | A | 不可 | 可 | ||||||||||||||
operand8 | C | S | A | 不可 | 可 | ||||||||||||||
operand9 | C | S | A | N | P | I | F | D | T | L | 不可 | 可 | |||||||
operand10 | S | A | 不可 | 可 | |||||||||||||||
operand11 | C | S | A | 不可 | 可 | ||||||||||||||
operand12 | S | A | N | P | I | F | B | D | T | L | 不可 | 可 | |||||||
operand13 | S | A | U | B | 不可 | 可 | |||||||||||||
operand14 | C | S | A | 不可 | 可 | ||||||||||||||
operand15 | C | S | A | 不可 | 可 | ||||||||||||||
operand16 | S | I4 | 不可 | 可 | |||||||||||||||
operand17 | S | I4 | 不可 | 不可 |
構文要素の説明
DOCUMENT FROM operand1 |
ドキュメントの場所:
operand1 は、ドキュメントにアクセスするための URL です。 注意: |
|||||||
---|---|---|---|---|---|---|---|---|
WITH |
WITH 節:
この節は、要求に対するオプションのユーザー/パスワード、ヘッダー、およびデータ詳細を指定するために使用します。 |
|||||||
USER operand2 |
ユーザー名:
operand2 は、要求に対して使用されるユーザーの名前です。 |
|||||||
PASSWORD operand3 |
ユーザーパスワード:
operand3 は、要求に対して使用されるユーザーのパスワードです。 |
|||||||
HEADER {[[NAME] operand4 [VALUE] operand5]}... |
ヘッダー節:
operand4 と operand5 は、相互に組み合わせた場合にのみ使用できます。
注意: operand4 のヘッダー名:
ヘッダー名にキャリッジリターン(CR)、ラインフィード(LF)、またはコロン(:)を含めることはできません。 これは、 operand5 のヘッダー値:
ヘッダー値に CR/LF を含めることはできません。 これは、 一般情報
HTTP 要求には、いくつかのヘッダー(例:Request-Method または Content-Type)が必要です。 これらのヘッダーは、 「自動生成ヘッダー」も参照してください。 |
|||||||
DATA |
DATA 節:
特定の |
|||||||
ALL operand6 |
operand6 は、送信される完全なドキュメントです。 この値は、HTTP 要求メソッド 「受信/送信データのエンコード」の「DATA ALL 節」を参照してください。 |
|||||||
[ENCODED [[IN] CODEPAGE operand7] |
operand6 は、デフォルトコードページ(システム変数 「受信/送信データのエンコード」の「DATA ALL 節」を参照してください。 |
|||||||
{[NAME] operand8 [VALUE] operand9}... |
DATA 変数名と値:
operand8 と operand9 は、相互に組み合わせた場合にのみ使用できます。
制限事項
operand8/operand9 が指定され、デフォルトで通信が |
|||||||
|
||||||||
「URL エンコードに対する一般的な注意」も参照してください。 | ||||||||
RETURN |
RETURN 節:
この節は、返される |
|||||||
HEADER [ALL operand10] |
RETURN HEADER ALL 節:
この節を指定すると、operand10 に HTTP レスポンスで配信されたすべてのヘッダー値が含まれます。 最初の行にはステータス情報が含まれ、すべての後続行には名前と値のペアとしてヘッダーが含まれます。 名前は常にコロン(:)で終了し、値は改行(LF)で終了します。 内部的には、すべてのキャリッジリターン(CR)/ラインフィード(LF)は改行(LF)に変換されます。 |
|||||||
HEADER [[NAME] operand11] [VALUE] operand12]... |
RETURN HEADER NAME/VALUE 節:
この節を指定すると、特定のヘッダー情報のみが返されます。 operand11 と operand12 は、相互に組み合わせた場合にのみ使用できます。
operand11 に返されるヘッダー名:
Web インターフェイスとの互換性のために、ヘッダー名は ダッシュ(-)文字の代わりに下線(_)で記述できます。 (内部的には、下線がダッシュで置換されます。) operand11 が空白の文字列の場合、ステータス情報が返されます。 HTTP/1.0 200 OK |
|||||||
RETURN PAGE |
RETURN PAGE 節:
受信データを特定のコードページでエンコードする場合、 以下の「受信/送信データのエンコード」の「RETURN PAGE 節」を参照してください。 |
|||||||
PAGE operand13 |
operand13 は、この要求に対して返されるドキュメントです。 以下の「受信/送信データのエンコード」の「RETURN PAGE 節」を参照してください。 |
|||||||
[ENCODED [[FOR TYPE[S] operand14...] [IN] CODEPAGE operand15]] |
operand14 は、operand13 に返されるドキュメントのエンコードを実行する MIME タイプのリストです。 以下の「受信/送信データのエンコード」の「RETURN PAGE 節」を参照してください。 |
|||||||
operand15 は、必要に応じて operand13 のエンコードに使用されるコードページです。 operand15 の値が空白の場合、operand13 は、キーワードサブパラメータ 以下の「受信/送信データのエンコード」の「RETURN PAGE 節」を参照してください。 |
||||||||
RESPONSE operand16 |
RESPONSE 節:
operand16 は、要求のレスポンスコード番号です。例えば、200(要求完了)です。 「レスポンス番号の概要 - HTTP/HTTPS 要求」も参照してください。 |
|||||||
GIVING operand17 |
GIVING 節:
要求を実行できなかった場合は、operand17 に Natural エラーが含まれます。 |
operand5 では、HEAD
、POST
、GET
、および PUT
がサポートされています。
次の表は、指定されたオペランドに応じた Request-Method の自動的な計算を示しています。
オペランド | Request-Method | |||
---|---|---|---|---|
HEAD | POST | GET | PUT | |
WITH HEADER (operand4/operand5) |
オプション | オプション | オプション | オプション |
WITH DATA (operand7/operand8) |
指定なし | 指定 | 指定なし | オプション ALL (operand6) 指定の場合のみ
|
RETURN HEADER (operand10~operand12) |
指定 | オプション | オプション | オプション |
RETURN PAGE (operand13) |
指定なし | 指定 | 指定 | オプション |
要求メソッドが POST
の場合、コンテンツタイプヘッダーを HTTP 要求で配信する必要があります。 コンテンツタイプが明示的に設定されていない場合、operand5 に対して次の値が自動的に生成されます。
application/x-www-form-urlencoded
注意:
自動的に生成されたヘッダーを上書きすることは可能です。 Natural はエラーについてそれらをチェックしません。 予期しないエラーが起こるかもしれません。
コンテンツタイプ application/x-www-form-urlencoded
で POST
データを送信するとき、一定の文字が URL エンコードによって表される必要があります。これは、%16 進文字コードの文字で代用することを意味しています。 URL エンコードが必要なときとその理由の詳細については、RFC 1630、RFC 1738、RFC
1808 を参照してください。 ここでは、いくつかの基本的な詳細を示します。 すべての非 ASCII 文字(つまり、ASCII 文字でもない有効な ISO 8859/1 文字)は URL エンコードする必要があります。例えば、ファイル köln.html は URL で k%F6ln.html として表示されます。
Web ページが電子メールによって要求されるとき、いくつかの文字が "危険" と考えられます。
これらの文字は次のとおりです。
文字 | URL エンコード構文 |
---|---|
タブ文字 | %09 |
スペース文字 | %20 |
[ | %5B |
\ | %5C |
] | %5D |
^ | %5E |
` | %60 |
{ | %7B |
| | %7C |
} | %7D |
~ | %7E |
URL を記述するとき、これらの文字の URL エンコードが必要です。
いくつかの文字は URL で特別な意味を持っています。例えば、コロン(:)は URL の残りから URL スキームを区別し、2 つのスラッシュ(//)は URL が共通インターネットスキーム構文とパーセント記号(%)に対応することを示します。 一般的に、これらの文字がファイル名の一部として出現するときには、それらを URL の特別な意味と区別するために、URL エンコードが必要です。これは単純化のためです。詳細については、RFC を参照してください。
これらの文字は次のとおりです。
文字 | URL エンコード構文 |
---|---|
" | %22 |
# | %23 |
% | %25 |
& | %26 |
+ | %2B |
, | %2C |
/ | %2F |
: | %3A |
< | %3C |
= | %3D |
> | %3E |
? | %3F |
@ | %40 |
ステータス | 値 | レスポンス |
---|---|---|
STATUS CONTINUE | 100 | 要求の継続は OK です |
STATUS SWITCH_PROTOCOLS | 101 | サーバーはアップグレードヘッダーでプロトコルを切り替えました |
STATUS OK | 200 | 要求は完了しました |
STATUS CREATED | 201 | オブジェクトが作成されました(理由 = 新しい URL) |
STATUS ACCEPTED | 202 | 非同期完了(TBS) |
STATUS PARTIAL | 203 | 部分的な完了 |
STATUS NO_CONTENT | 204 | 返すための情報がありません |
STATUS RESET_CONTENT | 205 | 要求は完了しましたがフォームをクリアしてください |
STATUS PARTIAL_CONTENT | 206 | 部分的に GET を実行しました |
STATUS AMBIGUOUS | 300 | サーバーは、何を戻すかを決定できませんでした |
STATUS MOVED | 301 | オブジェクトは恒久的に移動しました |
STATUS REDIRECT | 302 | オブジェクトは一時的に移動しました |
STATUS REDIRECT_METHOD | 303 | 新規アクセスメソッドを使用しないリダイレクション |
STATUS NOT_MODIFIED | 304 | If-modified-since は修正されませんでした |
STATUS USE_PROXY | 305 | プロキシへのリダイレクション(使用するプロキシはロケーションヘッダーで指定) |
STATUS REDIRECT_KEEP_VERB | 307 | HTTP/1.1:同じ verb を保持してください |
STATUS BAD_REQUEST | 400 | 無効な構文 |
STATUS DENIED | 401 | アクセスが拒否されました |
STATUS PAYMENT_REQ | 402 | 支払いが必要です |
STATUS FORBIDDEN | 403 | 要求が許可されていません |
STATUS NOT_FOUND | 404 | オブジェクトは見つかりませんでした |
STATUS BAD_METHOD | 405 | メソッドは許可されていません |
STATUS NONE_ACCEPTABLE | 406 | クライアントで許容できるレスポンスが見つかりませんでした |
STATUS PROXY_AUTH_REQ | 407 | プロキシ認証が必要です |
STATUS REQUEST_TIMEOUT | 408 | 要求待ちサーバーのタイムアウト |
STATUS CONFLICT | 409 | ユーザーはさらに詳細な情報で再度サブミットする必要があります |
STATUS GONE | 410 | リソースが使用できなくなっています |
STATUS LENGTH_REQUIRED | 411 | サーバーは、長さなしの要求の受け入れを拒否しました |
STATUS PRECOND_FAILED | 412 | 要求に指定された必須条件が失敗しました |
STATUS REQUEST_TOO_LARGE | 413 | 要求エンティティが大きすぎです |
STATUS URL_TOO_LONG | 414 | 要求 URL が長すぎです |
STATUS UNSUPPORTED_MEDIA | 415 | 未サポートのメディアタイプ |
STATUS SERVER_ERROR | 500 | 内部サーバーエラー |
STATUS NOT_SUPPORTED | 501 | "Required" はサポートされていません |
STATUS BAD_GATEWAY | 502 | ゲートウェイからエラーレスポンスを受信しました |
STATUS SERVICE_UNAVAIL | 503 | 一時的に過負荷がかかっています |
STATUS GATEWAY_TIMEOUT | 504 | ゲートウェイ待ちのタイムアウト |
STATUS VERSION_NOT_SUP | 505 | HTTP バージョンがサポートされていません |
リダイレクションは、要求された URL が移動したことを意味しています。 レスポンスとして、LOCATION
という名前の Return Header が表示されます。 このヘッダーには、要求されたページが移動した URL が含まれます。 新しい REQUEST DOCUMENT
要求は、移動したページを検索するために使用できます。
HTTP ブラウザは新しい URL に自動的にリダイレクトしますが、REQUEST DOCUMENT
ステートメントはリダイレクションを自動的に処理しません。
レスポンス Access Denied
は、有効なユーザー ID とパスワードが要求で提供される場合にのみ、要求されたページにアクセスできることを意味しています。 レスポンスとして、WWW-AUTHENTICATE
という名前の Return Header が、この要求に必要な領域で提供されます。
HTTP ブラウザは、通常、ユーザー ID とパスワードによってダイアログを表示しますが、REQUEST DOCUMENT
ステートメントではダイアログは表示されません。
REQUEST DOCUMENT
ステートメントを使用したデータ転送では、通常、コードページ変換は呼び出されません。 特定のコードページで受信/送信データをエンコードする場合、DATA ALL
節または RETURN PAGE
節でその指定を行います。
送信データのエンコードには、DATA ALL
節を使用します。
ALL operand6 [ENCODED [[IN ] CODEPAGE operand7]]
|
構文の説明:
ALL operand6 | operand6 は、送信される完全なドキュメントです。 この値は、HTTP 要求メソッド PUT で必要です(「自動生成ヘッダー」を参照)。
|
---|---|
[ENCODED [[IN] CODEPAGE operand7]] | operand6 は、デフォルトコードページ(システム変数 *CODEPAGE の値)から operand7 で指定されたコードページにエンコードされます。
|
受信データのエンコードには、RETURN PAGE
節を使用します。
[PAGE operand13 [ENCODED [[FOR TYPE [S ] operand14...] [IN ] CODEPAGE operand15]]]
|
HTTP/HTTPS 要求のレスポンスとして、受信データにバイナリデータ(例えば image/gif)または文字データ(例えば text/html)が含まれることがあります。 REQUEST DOCUMENT
ステートメントは、レスポンスとともに、要求したドキュメントのコンテンツタイプ(MIME タイプ)を指定するパラメータを受け取ります。 このパラメータには、ドキュメントのエンコードに使用されるコードページに関する情報が含まれることがあります。
この節により、Natural セッションのデフォルトコードページ(システム変数 *CODEPAGE
の値)への自動変換が実行されます。
構文の説明:
RETURN PAGE operand13 | 返されるページに対してエンコードは行われません。つまり、ページのエンコードは HTTP サーバーから配信されたときの状態のまま変わりません。 |
---|---|
RETURN PAGE operand13 ENCODED | 返される MIME タイプにエンコードが含まれる場合、operand13 はこのコードページからデフォルトコードページ(A/B)または(U)にエンコードされます。 下記の注を参照してください。 |
RETURN PAGE operand13 ENCODED [IN] CODEPAGE operand15 | 返される MIME タイプにエンコードが含まれない場合、operand13 は operand15 で定義されたコードページからデフォルトコードページ(システム変数 *CODEPAGE の値)(A/B)または(U)にエンコードされます。
|
RETURN PAGE operand13 [ENCODED [[FOR TYPE[S] operand14...] [IN] CODEPAGE operand15]] | 返される MIME タイプにエンコードが含まれない場合、その MIME タイプがoperand14 で指定されたタイプのいずれかと一致しているかどうか、追加のチェックが行われます。 一致している場合、operand13 は operand15 で定義されたコードページからデフォルトコードページ(A/B)または(U)にエンコードされます。 |
注意:
"返される MIME タイプにエンコードが含まれる" ということは、HTTP サーバーから charset=
節(例:charset=ISO-8859-1
)を含むコンテンツタイプヘッダーが返されることを意味します。
サーバーからヘッダー 'Content-type: text/html;charset=UTF-8'
が返されます。
プログラムコードサンプル 1:
... RETURN PAGE operand13
処理結果:
operand13 は UTF-8 エンコードのまま変わりません。
プログラムコードサンプル 2:
... RETURN PAGE operand13 ENCODED [..]
処理結果:
operand13 は、後で指定される operand15 および operand14 に関係なく、UTF-8 からデフォルトコードページに変換されます。 つまり、返されたコンテンツタイプヘッダーで有効なエンコードが見つかったため、operand14 と operand15 は評価されません。
サーバーからヘッダー 'Content-type: text/xml'
が返されます。
プログラムコードサンプル 1:
... RETURN PAGE operand13 ENCODED
処理結果:
コンテンツタイプヘッダーに有効なエンコードが含まれていないため、operand13 は未変換のまま変わりません。
プログラムコードサンプル 2:
... RETURN PAGE operand13 ENCODED FOR TYPES 'text/xml' IN CODEPAGE 'USASCII'
処理結果:
operand13 は、USASCII コードページからデフォルトコードページに変換されます。 この場合、受け取るページのエンコードに関するプログラマの想定に基づいて変換が行われます。
プログラムコードサンプル 3:
... RETURN PAGE operand13 ENCODED FOR TYPES 'text/html' IN CODEPAGE ' '
処理結果:
operand14 で指定された MIME タイプ 'text/html'
が、コンテンツタイプヘッダーで返された MIME タイプ 'text/xml'
と一致しないため、operand13 は未変換のまま変わりません。
プログラムコードサンプル 4:
... RETURN PAGE operand13 ENCODED IN CODEPAGE ' '
処理結果:
operand13 は、プロファイルパラメータ XML
のサブパラメータ RDCP
で指定されたデフォルトコードページからデフォルトコードページに変換されます。
注意:RDCP
サブパラメータのデフォルト値は 'ISO-8859-1' で、明示的な指定が何もない場合に適用されます。 『パラメータリファレンス』の「XML - PARSE XML および REQUEST DOCUMENT ステートメントの有効化」も参照してください。
注意:
このステートメントのダイアログ例 V5-RDOC がライブラリ SYSEXV にあります。
REQUEST DOCUMENT FROM "http://bolsap1:5555/invoke/sap.demo/handle_RFC_XML_POST" WITH USER #User PASSWORD #Password DATA NAME 'XMLData' VALUE #Queryxml NAME 'repServerName' VALUE 'NT2' RETURN PAGE #Resultxml RESPONSE #rc
REQUEST DOCUMENT FROM "http://pcnatweb:8080" RETURN PAGE #Resultxml RESPONSE #rc
REQUEST DOCUMENT FROM "http://pcnatweb" RESPONSE #rc
REQUEST DOCUMENT FROM "http://pcnatweb/cgi-bin/nwwcgi.exe/sysweb/nat-env" WITH DATA NAME 'XMLData' VALUE #Queryxml NAME 'repServerName' VALUE 'NT2' RETURN PAGE #Resultxml RESPONSE #rc
REQUEST DOCUMENT FROM "http://pcnatweb/test.txt" WITH DATA ALL #document RETURN PAGE #Resultxml RESPONSE #rc