Difference between revisions of "LlRequestURL"

From Second Life Wiki
Jump to navigation Jump to search
m
m
Line 13: Line 13:
|examples=
|examples=
This script requests a new URL after region restart:
This script requests a new URL after region restart:
<LSL>string url;
<LSL>
key urlRequestId;
string url;


default {
request_url()
     state_entry() {
{
         //Requesting a URL
     if (url != "")
         llRequestURL();
    {
         llReleaseURL(url);
         url = "";
     }
     }
     changed(integer What) {
 
        //Region restarted
    urlRequestId = llRequestURL();
         if (What & CHANGED_REGION_START) {
}
             //Request new URL
 
            llRequestURL();
default
         }
{
     changed(integer change)
    {
         if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT))
             request_url();
    }
 
    state_entry()
    {
         request_url();
     }
     }
     http_request(key ID, string Method, string Body) {
 
         if (Method == URL_REQUEST_GRANTED) {
     http_request(key id, string method, string body)
             //Saying URL to owner
    {
            url = Body;
         if (id == urlRequestId)
             llOwnerSay(url);
        {
        } else if (Method == URL_REQUEST_DENIED) {
             urlRequestId = NULL_KEY;
            llOwnerSay("No URLs free !");
 
        } else if (Method == "GET") {
             if (method == URL_REQUEST_GRANTED)
            llHTTPResponse(ID, 200, "Hello there !");
            {
                url = body;
                llOwnerSay(url);
            }
            else if (method == URL_REQUEST_DENIED)
                llOwnerSay("URL request has been denied! " + body);
         }
         }
        else if (method == "GET")
            llHTTPResponse(id, 200, "Hello world!");
     }
     }
}</LSL>
}
</LSL>
It's important to keep in mind that if you request another URL, that the old one will not be released, it will remain active. The following script drives home this point.
It's important to keep in mind that if you request another URL, that the old one will not be released, it will remain active. The following script drives home this point.



Revision as of 03:11, 31 July 2012

Summary

Function: key llRequestURL( );

Requests one HTTP:// url for use by this script. The http_request event is triggered with the result of the request.
Returns a key that is the handle used for identifying the result in the http_request event.

Caveats

  • When a region is (re)started all HTTP server URLs are automatically released and invalidated.
  • The number of available URLs is a limited resource, that is to say, a script can only have so many open URLs. See LSL http_server#Resource Limitations for details.
  • When abandoning a URL, always release it with llReleaseURL, otherwise it will leak.
All Issues ~ Search JIRA for related Bugs

Examples

This script requests a new URL after region restart: <LSL> key urlRequestId; string url;

request_url() {

   if (url != "")
   {
       llReleaseURL(url);
       url = "";
   }
   urlRequestId = llRequestURL();

}

default {

   changed(integer change)
   {
if (change & (CHANGED_REGION

See Also

Functions

•  llRequestSecureURL
•  llGetFreeURLs
•  llReleaseURL
•  llHTTPResponse
•  llGetHTTPHeader

Articles

•  LSL http server

Deep Notes

History

Search JIRA for related Issues

Signature

function key llRequestURL();