イベント:http_response


http_response(key request_id, integer status, list metadata, string body)

このイベントハンドラはllHTTPRequest()関数で送信したリクエストに対して
HTTPレスポンスを受信したときに発生します。
また、llHTTPRequest()関数で送信したリクエストに対してリクエストが失敗していたり、タイムアウトした時にも発生します。
request_idにはllHTTPRequest()関数の呼び出しが発生したときにllHTTPRequest()関数が返したUUIDの値が格納されます。
statusはHTTPレスポンスが返されたのか、リクエストが失敗した原因を示すHTTPステータスコードが設定されます。
499はTCPコネクションの確立が失敗したときや、コネクションが確立されても、それが無効なHTTP応答あった場合を示します。
ま、499は相手が無効なSSL証明書を持っている場合や、証明をつけてあっても、
一定時間(60秒に設定されることが多いらしい)以上経過して応答がなかった場合も499を受け取ります。
503はDNSへの問い合わせが失敗したことを示します。
#本来のHTTPにおいてはService Unavailable(サービス利用負荷)と呼ばれ、
サーバはサーバの一時的な過負荷あるいはメインテナンスのために、
現在、リクエストを扱うことができないことを意味します。
metadataは応答について説明するキーと値の組のペアがリストとして格納されます。
現在、返されるであろう唯一のキーはHTTP_BODY_TRUNCATEDです。
Valueにはイベントの受信容量の制限によって切り捨てられた情報のバイト数を示します。
応答がテキストmime-typeを指定する「content-type:」ヘッダーを含んでいる限り,bodyはHTTP応答のbodyに設定されます。
mime-typeが指定されないか、タイプがテキストタイプでないなら、bodyは「"Unsupported or unknown Content-Type." (サポートされないか未知のコンテントタイプ)」に設定されます。
「content-type:」ヘッダーで文字セットを指定すると、ボディーはUTF-8に変換されて応答するでしょう、また、サポートされてない文字コードが指定された場合は「サポートされないか未知の文字集合」に設定されるでしょう。
ボディーは現在、2048バイト以内に制限されます。
"\n"はLSLではコンパイル時に「改行文字」に変換されることを忘れないでください。
そして、あなたのサーバーが"\n"以外の文字を「改行文字」として定義されている可能性があります。
あなたは「改行」を加える適切な方法がないかどうかあなたのサーバのドキュメンテーションをチェックするべきです。
あなたのマイレージは変わるかもしれません。-Ice

あなたのWEBサーバーからデーターを得る簡単なスクリプト例

//This script requests from our data source (URL) and echoes out what it sends to the owner of the script
//I use this to test my PHP apps personally, it's a simple debugging application so I release it publicly
//You may use, redistribute, modify, copy however you feel would be useful
string URL="http://www.secondlife.com/httprequest/homepage.php";
key http;//This stores the HTTP request we send.
default
{
   touch_start(integer foo)
   {
       http=llHTTPRequest(URL, [] ,"");
   }
   http_response(key id,integer status,
   list meta, string body)
   {
       if(http==id)
       {
           integer i;
           list lbody=llParseString2List(body,["\n"],[]);
           integer count=llGetListLength(lbody);
           //This turns newline characters char(10)
           //into new lines in chat
           //These are Unix/LSL style end of lines,
           //use \r\n in place of \n for
           //Windows style end of line from web server.
           for(i=0;i<count;i++)
           {
               llOwnerSay(llList2String(lbody,i));
           }
       }
   }
}
最終更新:2008年09月06日 03:30