“LlRequestSecureURL”的版本间的差异
(创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: key llRequestSecureURL( ); |参数= 参数: |返回值=…”) |
(没有差异)
|
2020年8月5日 (三) 09:08的最新版本
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
| 函数名 |
|---|
| Function: key llRequestSecureURL( ); |
| 参数: |
| 返回值:请求一个HTTPS:// (SSL) url以供此对象使用。http_request事件与请求的结果相关联。HTTPS-in 使用端口12043。
返回一个handle (a key),用于识别http_request事件中的请求结果。 |
| 注意事项 |
|---|
| HTTPS-in 使用端口12043。
当(重新)启动一个区域时,所有HTTP server URL都会自动释放并失效。 使用CHANGED_REGION_START检测,这样就可以请求新的URL。 |
| 示例 |
|---|
| 重要:永远不要忘记再次发布你所请求的URL !url和prims一样是区域资源。如果你把他们都带走了,你就会和sim所有者或地产经理陷入大麻烦
请求安全URL。 string secureUrl;
key urlRequestId;
key selfCheckRequestId;
request_secure_url()
{
llReleaseURL(secureUrl);
secureUrl = "";
urlRequestId = llRequestSecureURL();
}
throw_exception(string inputString)
{
key owner = llGetOwner();
llInstantMessage(owner, inputString);
//是的,重新启动是处理异常的坏方法。
//然而,这只是一个演示脚本…
llResetScript();
}
default
{
on_rez(integer start_param)
{
llResetScript();
}
changed(integer change)
{
if (change & (CHANGED_OWNER | CHANGED_INVENTORY))
{
llReleaseURL(secureUrl);
secureUrl = "";
llResetScript();
}
if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT))
request_secure_url();
}
state_entry()
{
request_secure_url();
}
http_request(key id, string method, string body)
{
integer responseStatus = 400;
string responseBody = "Unsupported method";
if (method == URL_REQUEST_DENIED)
throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body);
else if (method == URL_REQUEST_GRANTED)
{
secureUrl = body;
key owner = llGetOwner();
llLoadURL(owner, "Click to visit my URL!", secureUrl);
//每5分钟检查丢失的URL
llSetTimerEvent(300.0);
}
else if (method == "GET")
{
responseStatus = 200;
responseBody = "Hello world!";
}
// else if (method == "POST") ...;
// else if (method == "PUT") ...;
// else if (method == "DELETE") { responseStatus = 403; responseBody = "forbidden"; }
llHTTPResponse(id, responseStatus, responseBody);
}
http_response(key id, integer status, list metaData, string body)
{
if (id == selfCheckRequestId)
{
// 如果你不经常这样做,现在正是习惯这样做的好时机!
selfCheckRequestId = NULL_KEY;
if (status != 200)
request_secure_url();
}
else if (id == NULL_KEY)
throw_exception("Too many HTTP requests too fast!");
}
timer()
{
selfCheckRequestId = llHTTPRequest(secureUrl,
[HTTP_METHOD, "GET",
HTTP_VERBOSE_THROTTLE, FALSE,
HTTP_BODY_MAXLENGTH, 16384],
"");
}
}
|
| 相关函数 |
|---|
| llGetHTTPHeader |
| 相关事件 |
|---|