REQUEST DOCUMENT FROM url |
|||
WITH [ with-clause] |
|||
RETURN [ return-clause] |
|||
RESPONSE http-response-code |
|||
[ GIVING natural-error-number] |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント: PARSE
XML
関連機能グループ:インターネットと XML
REQUEST DOCUMENT
ステートメントは、インターネット上でドキュメントを取得およびアップロードするために使用します。『プログラミングガイド』の「インターネットおよび XML アクセス用のステートメント」にある「REQUEST DOCUMENT」を参照してください。
Unicode サポートの詳細については、『Unicode およびコードページのサポート』ドキュメントの「REQUEST DOCUMENT」を参照してください。
また、REQUEST DOCUMENT
ステートメントによって内部的に発行される HTTP リクエストに使用されるタイムアウトを指定する、Natural プロファイルおよびセッションパラメータ RQTOUT
の説明も参照してください。
HTTP プロトコル下では、クライアントワークステーションの状況についての情報を維持するために、サーバーはクッキーを使用します。
REQUEST DOCUMENT
は、インターネットオプション設定を使用して実装されます。これは、セキュリティ設定に依存してクッキーが使用されることを意味しています。
インターネットオプション設定 Disabled
(使用不可)が設定されている場合、クッキーヘッダー(header-name-out/header-value-out
)が送信されても、クッキーは送信されません。
サーバー環境に対して、インターネットオプション設定 Prompt
を使用しないでください。クライアントはプロンプトに答えることができないため、この設定によりサーバーが "ハングアップ" します。
次のプロファイルパラメータを考慮する必要があります。NOPROX
、PROXPORT
、PROX
、SSLPRX
、SSLPRXPT
、NOSSLPRX
。これらのプロファイルパラメータの詳細については、『パラメータリファレンス』を参照してください。
HTTPS の場合、OpenSSL がインストールされている必要があります。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
url |
C | S | A | ○ | × | ||||||||||||||
http-response-code |
S | I4 | ○ | ○ | |||||||||||||||
natural-error-number |
S | I4 | ○ | × |
構文要素の説明:
構文要素 | 説明 | |
---|---|---|
url |
ドキュメントの場所:
|
|
with-clause |
WITH 節:
「 |
|
return-clause |
RETURN 節:
「 |
|
http-response-code |
RESPONSE:
「HTTP レスポンス - リダイレクトと拒否」も参照してください。 利用できる HTTP ステータスコードのリストについては、World Wide Web Consortium(W3C)の覚書 RFC 2616 を参照してください。 |
|
natural-error-number |
GIVING オプション: natural-error-number に 4 桁の Natural エラーが含まれます(要求を実行できなかった場合)。
|
[USER user-id]
|
[PASSWORD user-password]
|
[HEADER {[NAME ] header-name-out [VALUE ] header-value-out} ...]
|
[DATA {ALL outbound-document [ENCODED [[IN ] CODEPAGE code-page-out]]
|
|{[NAME ] variable-name-out [VALUE ] variable-value-out} ...}]
|
with-clause
節は、要求に対するオプションのユーザー/パスワード、ヘッダー、およびデータ詳細を指定するために使用します。
空の(つまり、WITH
の後に値が指定されていない) with-clause
は無視されます。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
user-id |
C | S | A | ○ | × | ||||||||||||||
user-password |
C | S | A | ○ | × | ||||||||||||||
header-name-out |
C | S | A | ○ | × | ||||||||||||||
header-value-out |
C | S | A | N | P | I | F | D | T | L | ○ | × | |||||||
outbound-document |
C | S | A | U | N | P | I | F | B | D | T | L | ○ | × | |||||
code-page-out |
C | S | A | ○ | × | ||||||||||||||
variable-name-out |
C | S | A | ○ | × | ||||||||||||||
variable-value-out |
C | S | A | N | P | I | F | D | T | L | ○ | × |
構文要素の説明:
構文要素 | 説明 | |
---|---|---|
user-id |
USER:
|
|
user-password |
PASSWORD:
|
|
header-name-out
|
HEADER NAME/VALUE オプション:
header-name-out:
ヘッダー名にキャリッジリターン(CR)、ラインフィード(LF)、またはコロン(:)を含めることはできません。これは、 header-value-out:
ヘッダー値に CR/LF を含めることはできません。これは、 「自動生成ヘッダー」も参照してください。 |
|
outbound-document |
DATA ALL オプション:
|
|
code-page-out |
DATA ALL ENCODED オプション:
アウトバウンドドキュメントにエンコーディング(XML)または文字セット(HTML)属性が含まれている場合は、 例:アウトバウンド XML ドキュメントに属性エンコーディング |
|
variable-name-out
|
DATA NAME/VALUE オプション:
制限事項
|
[HEADER [ALL header-all-in] [[NAME ] header-name-in [VALUE ] header-value-in ...]]
|
[PAGE inbound-document [ENCODED [[FOR
TYPES mime-type ...][IN ] CODEPAGE code-page-in]]]
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
header-all-in |
S | A | ○ | ○ | |||||||||||||||
header-name-in |
C | S | A | ○ | × | ||||||||||||||
header-value-in |
S | A * | A | N | P | I | F | B | D | T | L | ○ | ○ | ||||||
inbound-document |
S | A | U | B | ○ | ○ | |||||||||||||
mime-type |
C | S | A | ○ | × | ||||||||||||||
code-page-in |
C | S | A | ○ | × |
この節は、ヘッダーまたはドキュメントあるいはその両方に返される情報を指定するために使用できます。
構文要素の説明:
構文要素 | 説明 | |
---|---|---|
header-all-in |
HEADER ALL オプション:
最初の行にはステータス情報が含まれ、すべての後続行には名前と値のペアとしてヘッダーが含まれます。名前は常にコロン(:)で終了し、値は改行(LF)で終了します。内部的には、すべてのキャリッジリターン(CR)/ラインフィード(LF)は改行(LF)に変換されます。 |
|
header-name-in
|
HEADER NAME/VALUE オプション:
|
|
inbound-document |
PAGE オプション:
|
|
code-page-in |
PAGE ENCODED オプション:
必要な場合、
注意: |
|
mime-type |
PAGE ENCODED FOR TYPES オプション:
HTTP/HTTPS 要求のレスポンスとして、受信データにバイナリデータ(例えば image/gif)または文字データ(例えば text/html)が含まれることがあります。 返される MIME タイプにエンコードが含まれる場合、 返される MIME タイプにエンコードが含まれない場合、 返される MIME タイプにエンコードが含まれない場合、その MIME タイプが |
HTTP 要求には、いくつかのヘッダーが必要です。例:REQUEST-METHOD
またはコンテンツタイプ。これらのヘッダーは、REQUEST DOCUMENT
ステートメントで指定されたパラメータに応じて自動的に生成されます。
注意:
自動的に生成されたヘッダーを上書きすることは可能です。Natural はエラーについてそれらをチェックしません。予期しないエラーが起こるかもしれません。
REQUEST DOCUMENT
ステートメントは、次の HTTP REQUEST-METHOD
をサポートしています。HEAD
、POST
、GET
、および PUT
次の表は、指定されたオペランドに応じて生成された HTTP REQUEST-METHOD
を示しています。
WITH HEADER |
WITH DATA |
RETURN HEADER |
RETURN PAGE |
|
HEAD | o | - | x | - |
---|---|---|---|---|
POST | o | x | o | x |
GET | o | - | o | x |
PUT | o | DATA ALL * |
o | o |
上記の標準 REQUEST-METHOD
に加えて、メソッド DELETE
、PATCH
、OPTIONS
および TRACE
が REQUEST-METHOD
ヘッダーで指定できます。
o | 指定は任意です。オペランドはオプションとして指定できます。 |
- | オペランドは指定できません。 |
x | オペランドは常に指定されます。 |
* | DATA ALL のみに適用され、DATA NAME VALUE には適用されません
|
REQUEST-METHOD
POST
には、HTTP 要求用のコンテンツタイプヘッダーが必要です。コンテンツタイプが明示的に指定されていない場合、Natural では次のデフォルトのコンテンツタイプヘッダーを要求に挿入します。
application/x-www-form-urlencoded
コンテンツタイプ application/x-www-form-urlencoded
で POST
データを送信するとき、一部の文字を URL エンコードによって表す必要があります。つまり、%hexadecimal-character-code
の文字で代用することが必要です。ここでは、いくつかの基本的な詳細を示します。
URL エンコードが必要な場合とその理由の詳細については、World Wide Web Consortium(W3C)の覚書 RFC 1630、RFC 1738、および RFC 1808 を参照してください。
すべての非 ASCII 文字(つまり、ASCII 文字でもない有効な ISO 8859/1 文字)は URL エンコードする必要があります。例えば、ファイル köln.html
は URL で k%F6ln.html
として表示されます。
Web ページにサーバーの障害を回避するように要求するとき、URL は次の危険な文字をエンコードします。
危険な文字 | URL のエンコード |
---|---|
タブ文字 | %09 |
スペース文字 | %20 |
[ | %5B |
\ | %5C |
] | %5D |
^ | %5E |
` | %60 |
{ | %7B |
| | %7C |
} | %7D |
~ | %7E |
いくつかの文字は URL で特別な意味を持っています。例えば、コロン(:)は URL の残りから URL スキームを区別し、2 つのスラッシュ(//)は URL が共通インターネットスキーム構文とパーセント記号(%)に対応することを示します。一般的に、これらの文字がファイル名の一部として出現するときには、それらを URL の特別な意味と区別するために、URL エンコードが必要です(これは単純化のためです。詳細については、前述の RFC を参照してください。
予約されている文字は以下のとおりです。
予約済みの文字 | URL のエンコード |
---|---|
" | %22 |
# | %23 |
% | %25 |
& | %26 |
+ | %2B |
, | %2C |
/ | %2F |
: | %3A |
< | %3C |
= | %3D |
> | %3E |
? | %3F |
@ | %40 |
HTTP ステータスコードのリストについては、World Wide Web Consortium(W3C)が発行している覚書 RFC 2616 を参照してください。
リダイレクトおよび拒否された要求に対する HTTP レスポンスには、次の特別な考慮事項が適用されます。
HTTP レスポンスコード 301、302、303 は、要求されたドキュメントが存在する URL が変更されていること、およびそのために要求が別の URL にリダイレクトされたことを意味します。レスポンスとして、LOCATION
という名前のリターンヘッダーが表示されます。このヘッダーには、要求されたページが移動した URL が含まれます。新しい REQUEST DOCUMENT
要求は、移動したページを検索するために使用できます。
HTTP ブラウザは新しい URL に自動的にリダイレクトしますが、REQUEST DOCUMENT
ステートメントはリダイレクションを自動的に処理しません。
HTTP レスポンスコード 401 は、有効なユーザー ID とパスワードが要求で提供される場合にのみ、要求されたページにアクセスできることを意味しています。レスポンスとして、WWW-AUTHENTICATE
という名前のリターンヘッダーが、この要求に必要な REALM で提供されます。
HTTP ブラウザは、通常、ユーザー ID とパスワードによってダイアログを表示しますが、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
DEFINE DATA LOCAL 1 #FROM (A) DYNAMIC 1 #HEADER (A) DYNAMIC 1 #PAGE (A) DYNAMIC 1 #COOKIES (A20/1:3,1:4,2:5) 1 #RC (I4) END-DEFINE ASSIGN #FROM = 'http://www.myserver.com' REQUEST DOCUMENT FROM #FROM RETURN HEADER NAME 'Set-Cookie' VALUE #COOKIES(1,2:3,3) PAGE #PAGE RESPONSE #RC PRINT #COOKIES(*,*,*) END
上記のプログラム例では、(複数の次元を含む)無効な配列定義は次のようになります。
RETURN HEADER NAME 'Set-Cookie' VALUE #COOKIES(1:3,2:3,3) RETURN HEADER NAME 'Set-Cookie' VALUE #COOKIES(*,2,*)