LlHTTPRequest

来自人工智能助力教育知识百科
Ty讨论 | 贡献2020年11月27日 (五) 08:21的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: key llHTTPRequest( string url, list parameters, string bod…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: key llHTTPRequest( string url, list parameters, string body );
参数:

string url–A valid HTTP/HTTPS URL. list parameters –configuration parameters, specified as HTTP_* flag-value pairs [ parameter1, value1, parameter2, value2, parameterN, valueN] string body–Contents of the request.

返回值:返回一个标识 http 请求的句柄(一个键)。
注意事项
*空格、控件字符和 url 中不允许的其他字符将导致运行时错误。
  • 相应的 http 响应事件将在 prim 中的所有脚本中触发,而不仅仅是在请求 script.
  • requests 必须在60秒后完成,否则响应将被丢弃,http 响应状态代码将为499。
  • 默认情况下,响应主体被限制为2048字节,请参阅上面的 http _ body _ maxlength 以增加它。如果响应较长,则会被截断。
  • 请求主体大小(例如 post 和 put 请求)仅受可用脚本内存的限制。在 mono 下,脚本最多可以容纳32k 字符,因为每个字符都是2字节,所以,脚本不能上传超过32k utf-8字符。
  • 不能用于从互联网加载纹理或图像,更多信息请参见 web 纹理。
  • 如果被访问的站点依赖 lsl 脚本来报告 l $事务,那么它必须检查 x-secondlife-shard 头部,看看脚本是否在 beta 版 grid 上运行。
  • 如果你发送 post 到一个不能接受元数据的文件,比如文本或 html 文件,一些服务器会返回一个405错误。确保使用 get 方法确保在任何环境下都能成功。
  • 当服务器的 HTTP状态码被提供给脚本时,重定向代码如302将导致重定向被自动且透明地遵循,只有当 http 方法是 get,并返回结果响应。如果 http 方法是其他类型的,那么 get 就会返回一个状态码为302的 http 响应,但是如果没有任何方法查看头部,你就不能知道你被重定向到了哪里,除非这也包含在正文中。
  • 当使用 http-in 向脚本发出请求时,下面的应用是:
 当向 cap url 追加查询字符串时,cap guid 和查询字符串令牌之 

间必须有一个斜杠尾随.例如: “https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322?arg=gra ”会返回一个500 http 状态服务器错误代码,但是 “https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/?arg=gra” 会成功。

  • X-secondlife-owner-name 可能会返回“(loading...)”而不是所有者姓名(仍然为 true,2011年7月18日) 。
  • 在大约0625 slt 上发出的请求可能会失败,状态代码为503,在响应正文中出现“ error: the requested url could not be retrieved”和“(111) connection refused”。这已经被证实是凯利的预期行为,由于每晚的主日志轮换。它确实在当时影响对象到对象 http,并且很可能在同一时间左右影响对象到/来自 web。服务中的中断相当短暂,而且精确的时间可能会有所不同,因为我会调整它们的夜间/maint 进程,或者由于服务器负载。
  • 试图使用 http _ custom _ header 来设置它将导致运行时脚本错误。
示例
示例一
key http_request_id;
 
default
{
    state_entry()
    {
        http_request_id = llHTTPRequest("url", [], "");
    }
 
    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id != http_request_id) return;// exit if unknown
 
        vector COLOR_BLUE = <0.0, 0.0, 1.0>;
        float  OPAQUE     = 1.0;
 
        llSetText(body, COLOR_BLUE, OPAQUE);
    }
}
相关函数
llEscapeURL llHTTPResponse llUnescapeURL
相关事件
http response