<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
	<id>http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlRequestURL</id>
	<title>LlRequestURL - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlRequestURL"/>
	<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRequestURL&amp;action=history"/>
	<updated>2026-06-01T03:37:38Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://i.bnu.edu.cn/wiki/index.php?title=LlRequestURL&amp;diff=544&amp;oldid=prev</id>
		<title>Mkx：创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function:key llRequestURL( );  |参数= 参数： |返回值= 返回…”</title>
		<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRequestURL&amp;diff=544&amp;oldid=prev"/>
		<updated>2020-08-06T03:36:38Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function:key llRequestURL( );  |参数= 参数： |返回值= 返回…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{函数详情&lt;br /&gt;
|函数名 = Function:key llRequestURL( ); &lt;br /&gt;
|参数= 参数：&lt;br /&gt;
|返回值= 返回值：请求此脚本使用一个HTTP:// url。[[http_request event]]由请求的结果触发。&lt;br /&gt;
&lt;br /&gt;
返回a handle (a key) ，用于识别[[http_request event]]中的请求结果。&lt;br /&gt;
&lt;br /&gt;
|注意事项=&lt;br /&gt;
http -in不在通常的http端口号上;它在http_request事件中提供的url包含正确的端口号。&lt;br /&gt;
&lt;br /&gt;
你的脚本(和任何使用它的客户端)不应该“验证”提供的URL;特别地，不要假设它映射到任何特定的地址，或者在任何特定的域中。在“第二人生”进入云计算的过程中，这些将会发生变化，在“第二人生”进入云计算之后，这些变化可能会更加动态。&lt;br /&gt;
&lt;br /&gt;
这个函数的使用是被限制的。虽然它没有强制休眠时间，但是在短时间内如果有太多的请求(5个左右)，将会导致所有进一步的请求被拒绝，直到脚本停止url请求至少1秒。在每个请求之间使用0.6秒或更长的[[llSleep]]将防止您被throttled。&lt;br /&gt;
&lt;br /&gt;
当(重新)启动一个区域时，所有 HTTP server URLs都会自动释放并失效。&lt;br /&gt;
  使用[[CHANGED_REGION_START]]检测，这样就可以请求新的URL。&lt;br /&gt;
&lt;br /&gt;
可用url的数量是有限的资源，也就是说，脚本只能有这么多开放的url。&lt;br /&gt;
&lt;br /&gt;
当放弃一个URL时，用[[llReleaseURL]]释放它，以避免泄漏。重新设置脚本或删除prim也足以释放url。&lt;br /&gt;
&lt;br /&gt;
与[[listeners]]不同，url的持久性跨越状态更改&lt;br /&gt;
&lt;br /&gt;
|示例=&lt;br /&gt;
在[[HTTP Server URL Registration]] 中可以找到一个完整的示例，该示例展示了如何获取URL、向外部客户端注册该URL，并进行适当的回退和重试以联系外部服务。&lt;br /&gt;
该脚本在区域重启后请求一个新URL。&lt;br /&gt;
请参阅讨论页面，以了解为什么这个特定的脚本不需要使用llReleaseURL()。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string url;&lt;br /&gt;
key urlRequestId;&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
	urlRequestId = llRequestURL();&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
	llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
	if (change &amp;amp; (CHANGED_OWNER | CHANGED_INVENTORY))&lt;br /&gt;
		llResetScript();&lt;br /&gt;
 &lt;br /&gt;
	if (change &amp;amp; (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT))&lt;br /&gt;
		urlRequestId = llRequestURL();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    http_request(key id, string method, string body)&lt;br /&gt;
    {&lt;br /&gt;
	if (id == urlRequestId)&lt;br /&gt;
	{&lt;br /&gt;
	    if (method == URL_REQUEST_DENIED)&lt;br /&gt;
		llOwnerSay(&amp;quot;The following error occurred while attempting to get a free URL for this device:\n \n&amp;quot; + body);&lt;br /&gt;
 &lt;br /&gt;
	    else if (method == URL_REQUEST_GRANTED)&lt;br /&gt;
	    {&lt;br /&gt;
		url = body;&lt;br /&gt;
		llLoadURL(llGetOwner(), &amp;quot;Click to visit my URL!&amp;quot;, url);&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
重要的是要记住，如果您请求另一个URL，旧的URL将不会被释放，它将保持活动状态。下面的脚本说明了这一点。&lt;br /&gt;
如果您可以在您的土地上使用所有url，请尝试以下代码。删除prim/脚本将释放之前分配的所有url。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//警告:&lt;br /&gt;
//&lt;br /&gt;
//此脚本仅用于概念验证(演示目的)。&lt;br /&gt;
//不要使用它，如果你没有sim卡所有者和/或&lt;br /&gt;
//地产管理器可以测试此脚本。&lt;br /&gt;
//这个脚本可能会阻止来自sim和与sim之间的HTTP通信。&lt;br /&gt;
/ /……关闭所有联网的供应商和/或类似的机器。&lt;br /&gt;
//&lt;br /&gt;
//此脚本分配所有可用的url。&lt;br /&gt;
//删除脚本和/或取消包含脚本的对象，&lt;br /&gt;
//将释放所有以前获取的url。&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llRequestURL();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    http_request(key id, string method, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (method == URL_REQUEST_DENIED)&lt;br /&gt;
            llSetText(&amp;quot;No free URLs!&amp;quot;, &amp;lt;1.0, 0.0, 0.0&amp;gt;, 1.0);&lt;br /&gt;
 &lt;br /&gt;
        else if (method == URL_REQUEST_GRANTED)&lt;br /&gt;
        {&lt;br /&gt;
            llSetText( (string)llGetFreeURLs() + &amp;quot; URLs left\n&amp;quot; + body, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);&lt;br /&gt;
 &lt;br /&gt;
            llRequestURL();&lt;br /&gt;
        }&lt;br /&gt;
        else if (method == &amp;quot;GET&amp;quot;)&lt;br /&gt;
            llHTTPResponse(id, 200, &amp;quot;Hello there!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
如您所见，此脚本将使用您土地上所有可用的url，因为它在请求新url之前不会删除旧url。&lt;br /&gt;
只需将旧URL存储在一个全局变量中，然后用[[llReleaseURL]]释放它。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|相关函数=&lt;br /&gt;
[[llRequestSecureURL]]&lt;br /&gt;
&lt;br /&gt;
[[llGetFreeURLs]]&lt;br /&gt;
&lt;br /&gt;
[[llReleaseURL]]&lt;br /&gt;
&lt;br /&gt;
[[llHTTPResponse]]&lt;br /&gt;
&lt;br /&gt;
[[llGetHTTPHeader]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mkx</name></author>
		
	</entry>
</feed>