Difference between revisions of "LlRequestURL"

From Second Life Wiki
Jump to navigation Jump to search
m (added some exception handling to the first example script)
m
Line 121: Line 121:
Try the following code ONLY if you can use all your URLs on your land.
Try the following code ONLY if you can use all your URLs on your land.
Removing the prim/script will release all URLs previous assigned.
Removing the prim/script will release all URLs previous assigned.
<LSL>//Quickly allocates all available URLs
<lsl>
//Touching
// WARNING:
//
//      This script is only for proof-of-concept (demo purposes).
//      DO NOT use it if you don't have the sim owners and/or
//      estate managers OK to test this script.
//     This script can possibly block HTTP communication from and to the sim.
//      ...bringing down all networked vendors and/or similar machines.
//
//      This script allocates all available URLs.
//      Deleting the script and/or derezzing the object containing the script,
//     will release all previously taken URLs.


//deleting the script or derezzing the prim/object to releases the URLs


default
{
    state_entry()
    {
        llRequestURL();
    }


    http_request(key request_id, string method, string body)
    {
        if (method == URL_REQUEST_DENIED)
            llSetText("No free URLs!", <1.0, 0.0, 0.0>, 1.0);
        else if (method == URL_REQUEST_GRANTED)
        {
            llSetText( (string)llGetFreeURLs() + " URLs left\n" + body, <1.0, 1.0, 1.0>, 1.0);


default {
    state_entry() {
        //Requesting a URL
        llRequestURL();
    }
    http_request(key ID, string Method, string Body) {
        if (Method == URL_REQUEST_GRANTED) {
            //Printing new URL and number of free addresses
            llSetText( (string)llGetFreeURLs() + "\n" + Body, <1, 1, 1 >, 1);
            //Requesting a URL
             llRequestURL();
             llRequestURL();
        } else if (Method == URL_REQUEST_DENIED) {
            llSetText("No URLs free !", <1, 0, 0 >, 1);
        } else if (Method == "GET") {
            llHTTPResponse(ID, 200, "Hello there !");
         }
         }
        else if (method == "GET")
            llHTTPResponse(id, 200, "Hello there!");
     }
     }
}</LSL>
}
</lsl>
This script will, as you can see, use all URLs available on your land because it does not remove the old URLs before requesting a new one.
This script will, as you can see, use all URLs available on your land because it does not remove the old URLs before requesting a new one.
Just store the old URL in a global variable and release it with [[llReleaseURL]].
Just store the old URL in a global variable and release it with [[llReleaseURL]].

Revision as of 11:09, 24 September 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> string url; key urlRequestId; key selfCheckRequestId;

request_url() {

   llReleaseURL(url);
   url = "";
   urlRequestId = llRequestURL();

}

throw_exception(string inputString) {

   key owner = llGetOwner();
   llInstantMessage(owner, inputString);
   // yeah, bad way to handle exceptions by restarting.
   // However this is just a demo script...
   llResetScript();

}

default {

   on_rez(integer start_param)
   {
       llResetScript();
   }
   changed(integer change)
   {
if (change & (CHANGED_OWNER

See Also

Functions

•  llRequestSecureURL
•  llGetFreeURLs
•  llReleaseURL
•  llHTTPResponse
•  llGetHTTPHeader

Articles

•  LSL http server

Deep Notes

History

Search JIRA for related Issues

Signature

function key llRequestURL();