httpserver.lsl
key requestURL; string gURI; integer CHANNEL = 43; integer LINK_TARGET = -1; integer gPosterPrim = 1; default { state_entry() { requestURL = llRequestURL(); // Request that an URL be assigned to me. llOwnerSay((string) llGetLinkNumber()); llOwnerSay((string) llGetNumberOfPrims()); llMessageLinked(gPosterPrim,0,gURI,gURI); } on_rez(integer param) { // Triggered when the object is rezzed, like after the object has been sold from a vendor llResetScript();//By resetting the script on rez forces the listen to re-register. } touch_start(integer number) { llOwnerSay("My URI: " + gURI); llSay(0,"linknum: " + (string)llGetLinkNumber()); llSay(0, gURI); llMessageLinked(gPosterPrim,0,gURI,gURI); } link_message(integer sender_num, integer num, string msg, key id) { llOwnerSay(msg); llMessageLinked(gPosterPrim,0,gURI,gURI); } changed (integer change) { if (change && CHANGED_REGION ) { requestURL = llRequestURL(); // Request that an URL be assigned to me. } else { llOwnerSay("No need to update URL."); } } http_request(key id, string method, string body) { if ((method == URL_REQUEST_GRANTED) && (id == requestURL) ){ // An URL has been assigned to me. llOwnerSay("LSL server obj: " + (string)llGetKey()); llOwnerSay("URI: " + body); llSay(CHANNEL, body); gURI = body; requestURL = NULL_KEY; } else if ((method == URL_REQUEST_DENIED) && (id == requestURL)) { // I could not obtain a URL llOwnerSay("There was a problem, and an URL was not assigned: " + body); requestURL = NULL_KEY; } else if (method == "POST") { list headers = [ "x-script-url", "x-path-info", "x-query-string", "x-remote-ip", "user-agent", "x-secondlife-shard", "x-secondlife-object-name", "x-secondlife-object-key", "x-secondlife-region", "x-secondlife-local-position", "x-secondlife-local-rotation", "x-secondlife-local-velocity", "x-secondlife-owner-name", "x-secondlife-owner-key" ]; integer pos = ~llGetListLength(headers); while( ++pos ) { string header = llList2String(headers, pos); llOwnerSay(header + ": " + llGetHTTPHeader(id, header)); } // Anincoming message was received. string time = llGetTimestamp(); llOwnerSay("lslhttpserver (" + time + ") Received information from the outside: " + body); llHTTPResponse(id,200,"Thank you for calling. All of our operators are busy."); } else { // An incoming message has come in using a method that has not been anticipated. llHTTPResponse(id,405,"Unsupported Method"); } } }
post.lsl
key requestid; // just to check if we're getting the result we've asked for; all scripts in the same object get the same replies string uri; integer listen_handle; string gURI; key gServerPrimKey; integer gPrimServer = 2; default { state_entry() { llMessageLinked(gPrimServer,0,"Send gPrimURI","Send gPrimURI"); } on_rez(integer param) { // Triggered when the object is rezzed, like after the object has been sold from a vendor llResetScript();//By resetting the script on rez forces the listen to re-register. } link_message(integer sender_num, integer num, string msg, key id) { llOwnerSay(msg); gURI = msg; } touch_start(integer number) { llOwnerSay("My URI: " + gURI); llSay(0,"linknum: " + (string)llGetLinkNumber()); llSay(0, gURI); llMessageLinked(gPrimServer,0,"Send gPrimURI","Send gPrimURI"); requestid = llHTTPRequest(gURI, [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/x-www-form-urlencoded"], "time=" + llGetTimestamp() +"¶meter2=world"); } http_response(key request_id, integer status, list metadata, string body) { string time = llGetTimestamp(); if (request_id == requestid) llOwnerSay( "http resp(" + time + ") key: " + (string)request_id); llOwnerSay( "http resp(" + time + ") status: " + (string)status); llOwnerSay( "http resp(" + time + ") metadata: " + (string)metadata); llOwnerSay( "http resp(" + time + ") body: " + body); llWhisper(10, " Whisper to test box"); } }
No comments:
Post a Comment