Game Maker Language リファレンス > 組み込み関数 用途別 > 非同期関数 > http_get
指定のURLにGETメソッドでリクエストをします (※Free版では使用不可)
http_get(url);
この関数を使うと、指定のURLにGETメソッドで接続します。これは非同期関数であるため、レスポンスが戻ってくるまでの間、GameMaker:Studioは処理をブロックすることはありません。レスポンスは非同期イベント"HTTP"で受け取ります。レスポンスはマップに文字列の形式で格納されます。
以下に接続の例を記述します。
http_get("http://www.YoYoGames.com/logon?username="+name);
"name"変数にサーバに渡すパラメータを指定し、URLに接続をしています。このように少ないパラメータであればGETメソッドで充分でしょう。
この関数の戻り値はds_mapのインデックス番号となります。リクエスト時点では空の状態です。コールバックイベント"HTTP"が発生した時点で、特殊な変数である"async_load"に"dictionary"形式で格納されます。その構造は以下のとおりです。
あなたはプラウザのXSS保護を知っておかなければなりません。 ドメインへのリクエストやデータ取得により、空白の結果を返すことがあります。 詳細はクロスドメイン問題のセクションを確認して下さい
http_get関数は、任意のイベントから呼び出すことができ、非同期処理であるため、瞬時に結果が得られることもあれば、数秒かかることもあります。関数呼び出しは以下のように簡単に行えます。
get[0] = http_get("http://www.MacSweeneyGames.com/logon?username=" + name);
上記コードは変数"name"の値を指定のURLへリクエストします。結果は非同期イベントである"HTTP"で処理され、"get[0]"変数にds_map形式で値が格納されます。"HTTP"イベントでは以下のように記述します。
// リクエストしたときのIDと比較 if ds_map_find_value(async_load, "id") == get[0] { // ステータスのチェック if ds_map_find_value(async_load, "status") >= 0 { // レスポンスデータの取得 r_str = ds_map_find_value(async_load, "result"); } else { r_str = "null"; } }
上記コードはリクエスト時に取得できるds_mapのIDをチェックし、ステータスのチェックをしています。正しければレスポンスデータを"r_str"変数に格納しています。