Difference between revisions of "LlRequestURL"
Jump to navigation
Jump to search
Kireji Haiku (talk | contribs) m (added some exception handling to the first example script) |
Kireji Haiku (talk | contribs) 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> | ||
// | // 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. | |||
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); | |||
llRequestURL(); | llRequestURL(); | ||
} | } | ||
else if (method == "GET") | |||
llHTTPResponse(id, 200, "Hello there!"); | |||
} | } | ||
}</ | } | ||
</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 10:09, 24 September 2012
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: key llRequestURL( );0.0 | Forced Delay |
10.0 | Energy |
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.
- Use CHANGED_REGION_START to detect this so new URL can be requested.
- 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.
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 |