http_post_string(url, string);
Argument | Description |
---|---|
url | The web address of the server that you wish to get information from |
string | The string you wish to send to the specified URL |
Returns: Real
In computing, a post request is used when the client needs to send data to the server as part of the retrieval request, such as when uploading a file or submitting a completed form, and the
same is true of this function in GameMaker: Studio. In contrast to the
If there are multiple packets being returned to your game, the callback "status" key will return 1, in which case the ds_map will have the following additional keys:
NOTE: You should be aware that due to XSS protection in browsers, requests to and attempts to load resources from across domains are blocked and
may appear to return blank results. Please see the section on Cross Domain Issues for further details.
The http_post_string function can be called from any event, and since it is asynchronous the callback can be almost instantaneous or could take several seconds. Calling the function is simple and would look
something like this:
var str = "name=" + global.player_name + "&score=" + string(global.player_score);
The above code sends a retrieval request to the specified URL with the given parameters as well as sending the additional data (player name and score in URL-encoded form) stored in the variable str. This will trigger
all defined asynchronous Http Events if a callback is received, and you can check the "id" returned against that stored in the variable post to make sure that you run the correct code should you
have used various http_post_string() functions. The following example code shows how this would be done:
var r_str = "null";
The above code will first check the id of the ds_map that has been created, then check the status of the callback. If the value is equal to 0 (signalling success) the result from the callback will then be
stored in a variable for future use, otherwise the variable will simply hold a default value (in this case "null").
This event will generate a "call back" which is picked up by any HTTP Events, in which case it will generate a
ds_map (more commonly known as a "dictionary") that is exclusive to this event and is stored in the special variable async_load.
This ds_map will contain different values depending on whether there is data being returned or not. For example, if you have requested a file, the event will trigger multiple times as each packet of data is
received so that you can show a progress bar, for example. The general structure for the ds_map will be as follows:
Extended Example:
post = http_post_string("http://www.angusgames.com/game?game_id=" + string(global.game_id), str);
if ds_map_find_value(async_load, "id") == post
{
if ds_map_find_value(async_load, "status") == 0
{
r_str = ds_map_find_value(async_load, "result");
}
}