Game Maker Language リファレンス > 組み込み関数 用途別 > 非同期関数 > http_post_string
指定のURLにPOSTメソッドでリクエストをします (※Free版では使用不可)
http_post_string(url, string);
この関数を使うと、指定のURLにPOSTメソッドで接続します。これは非同期関数であるため、レスポンスが戻ってくるまでの間、GameMaker:Studioは処理をブロックすることはありません。レスポンスは非同期イベント"HTTP"で受け取ります。レスポンスはマップに文字列の形式で格納されます。
この関数の戻り値はds_mapのインデックス番号となります。リクエスト時点では空の状態です。コールバックイベント"HTTP"が発生した時点で、特殊な変数である"async_load"に"dictionary"形式で格納されます。その構造は以下のとおりです。
あなたはプラウザのXSS保護を知っておかなければなりません。 ドメインへのリクエストやデータ取得により、空白の結果を返すことがあります。 詳細はクロスドメイン問題のセクションを確認して下さい
http_get関数は、任意のイベントから呼び出すことができ、非同期処理であるため、瞬時に結果が得られることもあれば、数秒かかることもあります。関数呼び出しは以下のように簡単に行えます。
var str; str = json_encode(game_info); get[0] = http_post_string("http://www.angusgames.com/game?game_id=" + string(global.game_id), str)
上記コードはjson_encode()によりJSONエンコードしたds_map変数"str"の値を指定の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"変数に格納しています。