http_get

使用此函数,您可以连接到指定的 URL 以检索信息。 由于这是一个异步函数,GameMaker 在等待回复时不会阻塞,而是会继续运行,除非它获得回调信息。 此信息将采用字符串形式,并会在对象属性中定义的任何实例中触发异步事件。 您还应注意,在使用此函数时,HTTP 请求参数(当您在网页上提交表单时,这些位有时会“附加”到 URL 的末尾)是完全可以接受的,例如:

http_get("http://www.example.com/logon?username="+name);

会将保存在变量“name”中的字符串传递给服务器,并从该 URL 检索数据。 因此,本质上,任何时候需要将一段简单、简短的数据从客户端传递到服务器时,这都是合理的选择作为要使用的函数。

注意 您应该注意,由于浏览器中的 XSS 保护,跨域的请求和加载资源的尝试会被阻止,并且可能会返回空白结果。请参阅有关 跨域问题 的部分了解更多详情。

此函数将生成多个“回调”,这些回调由任何 HTTP 事件获取。 这些将生成专用于该事件并存储在特殊变量 async_load 中的 DS map(通常称为“字典”)。 根据是否有数据返回,此 DS 映射将包含不同的值。 例如,如果您请求了一个文件,该事件将在收到每个数据包时触发多次,以便您可以显示进度条等。 DS 映射的一般结构如下:

如果有多个数据包返回到您的游戏,回调“status”键将返回 1,在这种情况下,DS 地图将具有以下附加键:

 

语法:

http_get(url);

参数类型描述
urlString您希望从中获取信息的服务器的 Web 地址

 

返回:

Async Request ID

 

扩展示例:

http_get() 函数可以从任何事件调用,并且由于它是异步的,回调几乎可以是即时的,也可能需要几秒钟。 调用函数很简单,看起来像这样:

get = http_get("http://www.MacSweeneyGames.com/logon?username=" + name);

上面的代码会将保存在变量“name”中的字符串传递给给定的服务器,并从该 URL 检索数据,触发一个包含 async_load DS 映射的异步事件(async_load 映射索引将存储在 变量“get”,以便您可以检查正确的回调)。 触发的异步事件将是 HTTP 子事件,在那种情况下,您将拥有以下内容:

if (ds_map_find_value(async_load, "id") == get)
{
    if (ds_map_find_value(async_load, "status") == 0)
    {
        r_str = ds_map_find_value(async_load, "result");
    }
    else
    {
        r_str = "null";
    }
}

上面的代码会首先检查已经创建的DS地图的id,然后检查回调的“状态”。 如果该值等于 0(表示成功),则回调的结果将存储在一个变量中以供将来使用,否则该变量将设置为默认值(在本例中为“null”)。