LSL(Linden Script Language)スクリプトTips集

セカンドライフとインターネットとの連携

オブジェクトを右クリックしTouchすると、インターネットのhttp://www.aipiro.com/lsltips/index25.php

アクセスし、そこで得られた情報を表示します。
下記のスクリプトを使います。

key requestid;
default {
  touch_start(integer total_number){
    requestid = llHTTPRequest("http://www.aipiro.com/lsltips/index25.php",
      [HTTP_METHOD, "POST",HTTP_MIMETYPE, "application/x-www-form-urlencoded"],
      "");
  }
  http_response(key request_id, integer status, list metadata, string body){
    if (request_id == requestid)
    llWhisper(0, body);
  }
}
llHTTPRequest関数
一番目のパラメータ : アクセスするURL
二番目のパラメータ : HTTPリクエスト情報(HTTP_METHOD 、HTTP_MIMETYPE、HTTP_BODY_MAXLENGTH 、HTTP_VERIFY_CERT )
三番目のパラメータ : POSTパラメータと値
http_responseイベント
一番目のパラメータ : アクセスが成功した場合は、llHTTPRequest の戻り値が返ります。エラーの場合はNULL_KEY が返ります。
二番目のパラメータ : HTTP code (like 404 or 200)エラーコードが入ります。
三番目のパラメータ : メタデータ
四番目のパラメータ : レスポンスのbody(最大2049バイトまで)

インターネット側においたindex25.phpの内容はこんな簡単なものです。

<?
echo "The time of going to work of Aipiro is 22:00. " ;
?>

<補足>
このサンプルスクリプトでは行っていませんが、POSTやGETでパラメータを渡すことも可能なので、
LSLからWEBサイトの情報を更新!なんてこともできます。
LSL側で
llHTTPRequestの最後の引数に"param1=XXX&param2=YYYY"と指定し、
PHP側で
$parameter1 = $_POST["param1"];
$parameter2 = $_POST["param2"];
という感じで取得できます。(parameter1にはXXXが、parameter2にはYYYが入ります。)
また、ヘッダー情報にオブジェクト情報が入るのでオーナー名などを取得することもできます。
このTipsを利用してSL内でアンケート調査してます。SLでアンケートにご協力ください。