メインコンテンツまでスキップ
バージョン: 開発中

HTTP Get

HTTP Get ( url ; response {; headerNames ; headerValues}{; *} ) -> 戻り値

引数説明
urlテキスト🡒リクエスト送信先URL
responseテキスト, BLOB, ピクチャー, オブジェクト🡘リクエストの結果
headerNamesテキスト配列🡒リクエストのヘッダー名
🡘返されたヘッダー名
headerValuesテキスト配列🡒リクエストのヘッダー値
🡘返されたヘッダー値
*演算子🡒指定時: 接続を保持する (keep-alive)省略時: 自動で接続を閉じる
戻り値倍長整数🡐HTTPステータスコード

説明

HTTP Getコマンドは指定したURLにHTTP GETリクエストを送信し、HTTPサーバーからのレスポンスを処理します。

url 引数にはリクエストの送信先URLを渡します。シンタックスは以下の通りです:

http://[{user}:[{password}]@]host[:{port}][/{path}][?{queryString}]

例えば以下のような文字列を渡せます:

    http://www.myserver.com    http://www.myserver.com/path    http://www.myserver.com/path?name=jones    https://www.myserver.com/login (*)    http://123.45.67.89:8083    http://john:smith@123.45.67.89:8083    http://[2001:0db8:0000:0000:0000:ff00:0042:8329]    http://[2001:0db8:0000:0000:0000:ff00:0042:8329]:8080/index.html (**)

(*) HTTPSリクエストを行う場合でも、証明書の発行局は検証されません。
(**) IPv6 アドレスをURLに使用する場合についての詳細は RFC 2732 を参照ください。

コマンド実行後、response 引数はサーバーから返される結果を受け取ります。この結果はレスポンスからヘッダーを取り除いたボディー部です。
responseには異なる型の変数を渡すことができます:

  • テキスト: 期待される結果がテキストの場合(以下参照)。
  • BLOB: 期待される結果がバイナリの場合。
  • ピクチャー: 期待される結果がピクチャーの場合。
  • オブジェクト:期待される結果が C_OBJECT オブジェクトの場合。

注: response 引数にテキスト変数が渡された場合、4Dはサーバーから返されたデータを解読しようとします。4Dはまずcontent-type ヘッダーから文字セットを取得しようとし、次にBOMの中身を使用し、最後はhttp-equiv charset (html コンテンツ内) あるいは encoding (xml用) 属性を探します。それでも文字セットが見つからない場合、4DはレスポンスをANSIで解読しようとします。変換が失敗した場合、返されるテキストは空になります。サーバーが文字セット情報あるいはBOMを返すかどうかが分からない一方エンコーディング情報を知っている場合には、BLOBにresponse変数を渡してConvert to textを呼び出す方が正確です。

BLOBを渡した場合、テキストやピクチャー、その他 (.wav, .zip, etc.) どのようなタイプのコンテンツでも受け取ることができます。受け取った内容を復元するのは開発者の仕事です (ヘッダーはBLOBに含まれません)。C_OBJECT 型のオブジェクトを渡したとき、リクエストがテキストコンテンツ型の結果を返す場合、4D はコンテンツをJOSN として解析しようとし、その解析された結果をオブジェクトとして返します。それ以外の場合には4D.Blob 型のオブジェクトが返されます。

headerNamesheaderValuesにはリクエストヘッダーの名前と値をそれぞれ格納した配列を渡します。
このコマンド実行後、これらの配列にはHTTPサーバーから返されたレスポンスのヘッダー情報で置き換えられます。これにより特にCookieを管理できます。

* 引数を使用してサーバー接続時にkeep-aliveメカニズムを有効にできます。デフォルトではこの引数が省略されると、keep-aliveは有効になりません。

コマンドからは標準のHTTPステータスコードが返されます (200=OK等)。HTTPステータスコードについてはRFC 2616を参照してください。
ネッ トワークに関連する理由 (DNS解決に失敗した、サーバーに接続できないなど...) により、サーバーに接続できない場合、コマンドは0を返し、エラーが生成されます。このエラーはON ERR CALLコマンドを使用してインストールされたエラー処理メソッドで処理できます。

例題 1

4D Webサイトから4Dロゴを取得する:

 var URLPic_t : Text
 URLPic_t:="http://www.4d.com/sites/all/themes/dimention/images/home/logo4D.jpg"
 ARRAY TEXT(HeaderNames_at;0)
 ARRAY TEXT(HeaderValues_at;0)
 var Pic_i : Picture
 $httpResponse:=HTTP Get(URLPic_t;Pic_i;HeaderNames_at;HeaderValues_at)

例題 2

RFCを取得する:

 var URLText_t : Text
 var Text_t : Text
 URLText_t:="http://tools.ietf.org/rfc/rfc1.txt"
 ARRAY TEXT(HeaderNames_at;0)
 ARRAY TEXT(HeaderValues_at;0)
 $httpResponse:=HTTP Get(URLText_t;Text_t;HeaderNames_at;HeaderValues_at)

例題 3

動画を取得する:

 var vBlob : Blob
 $httpResponse:=HTTP Get("http://www.example.com/video.flv";vBlob)
 BLOB TO DOCUMENT(vBlob;"video.flv")

参照

HTTP Request