リファレンス URL:http_request(url, method, header_map, body);
「実数型 (Real) 」として戻り値
HTTP 接続には常に HTTP リクエストヘッダーを付けて送信しているが、GM:S はサーバとのハンドシェイクを簡略化した http_post_string 関数を用意しているため、一般的には POST 用途なら http_post_string 関数を GM:S では利用するのが便利だと思う。
しかし HTTP リクエストヘッダーをより詳細に定義する必要がある場合はリクエストヘッダーを編集してそれを送信する必要がある。この時に利用されるのが http_request 関数である。
http_request は HTTP リクエストヘッダーを自分で定義して、HTTP サーバへ接続を試行、HTTP サーバからの応答を待つ、これら一連の動作をこなす HTTP サーバへの送受信用関数。
HTTP サーバからの応答がすぐに返って来るとは限らないため、受信を待つ間にゲーム動作へ影響を及ぼさないよう、この関数は非同期(ゲーム動作を止めずにタイムアウトまで HTTP サーバからの応答をバックグラウンドで待つ動作)で動く。
リクエストヘッダーの内容は ds_map を使って関数へ渡す仕組みになっているため、ds_map を必ず併用する。
関数へ渡す引数は以下四つ
パラメータ | 説明 |
---|---|
url | IP アドレス もしくは URL |
method | ポスト(POST)かゲット(GET)※ 1 |
header_map | リクエストヘッダー※ 2 |
body | 送信用データ※ 3 |
var map = ds_map_create(); //リクエストヘッダーの編集 ds_map_add(map, "Host", "225.0.0.97:3000"); ds_map_add(map, "Connection", "keep-alive"); ds_map_add(map, "Content-Length", "169"); ds_map_add(map, "Cache-Control", "max-age=0"); ds_map_add(map, "Authorization", "Basic eW95b19hZG1pbjpjNG5lZmllbGQ="); ds_map_add(map, "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); ds_map_add(map, "User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36"); ds_map_add(map, "Content-Type", "application/x-www-form-urlencoded"); ds_map_add(map, "Accept-Encoding", "gzip,deflate,sdch"); ds_map_add(map, "Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6"); ds_map_add(map, "Cookie", "request_method=GET; _InAppPurchases_session=69bb6ef6eec2b"); //送信用データ var data="utf8=%E2%9C%93&authenticity_token=kPmS14DcYcuKgMFZUsN3XFfj3mhs%3D&product%5Bname%5D=CatchTheHaggis&product%5Bproduct_id%5D=http_test&commit=Create+Product"; //リクエスト送信+受信待ち開始 request = http_request( "http:225.0.0.97:3000/products", "POST", map, data );
Functions/http_request