Http request

From Second Life Wiki
Revision as of 21:45, 9 January 2014 by Strife Onizuka (talk | contribs)
Jump to navigation Jump to search

Description

Event: http_request( key request_id, string method, string body ){ ; }

Triggered when task receives an HTTP request.

• key request_id HTTP request id for response use, and function response identification.
• string method "GET", "POST", "PUT", "DELETE", URL_REQUEST_GRANTED, URL_REQUEST_DENIED
• string body Contents of the request.

Specification

See LSL_http_server for full specification.

Caveats

  • body is limited to 2048 bytes; anything longer will be truncated to 2048 bytes.
  • headers (accessed with llGetHTTPHeader) are limited to 255 bytes.
  • There is a limit of 64 pending http_request
  • body is not sent with the request unless the method is set to "POST", "PUT", or URL_REQUEST_GRANTED.
  • Requests made at approx 0625 SLT may fail with a 503 status code, with ERROR: The requested URL could not be retrieved, and (111) Connection refused in the body of the response. This has been confirmed as expected behaviour by Kelly, due to the nightly maint & log rotation. It does reliably impact object to object HTTP at that time, and quite probably may impact object to/from web around the same time. The interruption in service is fairly brief, and the precise timing may vary as LL adjust their nightly maint processes, or due to server load.
All Issues ~ Search JIRA for related Bugs

Examples

See LSL_http_server/examples for some examples from the feature design phase.

KBcaution.png Important: Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the sim owner and/or estate managers.

<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

Notes

See Also

Functions

•  llRequestURL Request a new LSL Server public URL
•  llRequestSecureURL Request a new LSL Server public URL
•  llReleaseURL Release a URL
•  llHTTPResponse For replying to HTTP requests
•  llGetHTTPHeader Returns the requested HTTP header's value
•  llEscapeURL
•  llUnescapeURL

Deep Notes

Issues

All Issues

~ Search JIRA for related Issues
   Design: LSL http_server

Signature

event void http_request( key request_id, string method, string body );