Http response/ja
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
説明
イベント: http_response( key request_id, integer status, list metadata, string body ){ ; }32 | イベント ID |
タスクが llHTTPRequest の返答のうちの 1 つを受け取ったときに発生します。
• key | request_id | – | llHTTPRequest の復帰値と一致 | |
• integer | status | – | HTTP ステータスコード (404 や 200 のようなもの) | |
• list | metadata | – | HTTP_* 定数や属性のリスト | |
• string | body |
仕様
415 ステータスコード "Unsupported or unknown Content-Type"
リモートサーバはリクエストに返答しましたが、返答の Content-Type (XML, JSON, Atom, RSS, PLS などのようなもの) を Second Life サーバは認識できず、スクリプトにそれを渡すことができません。 415 であれば、サーバはリクエストを受け取って返答したと考えてよいでしょう。
499 ステータスコード
通常の HTTP ステータスコードに加え、 SL には 499 という特別な status コードがあります。このコードはリモート Web サーバでは生成されず、 SL のサーバで生成されます。これが意味するものは:
- リクエストタイムアウト (60 秒)
- SSL エラー
- URL の中に空白がある (llEscapeURL で URL をエスケープしてください)
502 ステータスコード
プロクシサーバが上流のサーバから不正なレスポンスを受け取りました。このエラーはインワールドのオブジェクトに llHTTPRequest を送っり、受け取ったオブジェクトが llHTTPResponse で返答しなかったときに発生します。
定数 | 型 | 説明 | |
---|---|---|---|
HTTP_BODY_TRUNCATED | 0 | integer | 丸め位置をバイト数で |
サンプル
key http_request_id;
default
{
state_entry()
{
http_request_id = llHTTPRequest("url", [], "");
}
http_response(key request_id, integer status, list metadata, string body)
{
if (request_id == http_request_id)
{
llSetText(body, <0,0,1>, 1);
}
}
}
注意点
解析にまつわるトラブル
llHTTPRequest/http_response を使っているときに、なんらかの理由により正当な RSS フィードや他の Web コンテンツが解析できなくなった場合は、Second Life の外で作業する必要が出てくるでしょう。これは近い将来変更されることはないと思われます。ヘッダをチェックするのに、シミュレータレベルでさらにオーバーヘッドが加算されるからです。
Unicode
UTF-8 でコンテンツを提供する際は、必ずサーバで送信ヘッダの "Content-Type" に "charset=utf-8" を入れるように設定しましょう。そうしないと文字化けします。詳細は、 W3C:Setting the HTTP charset parameter を参照してください。
リクエストヘッダ
ヘッダ | 説明 | データ例 |
---|---|---|
X-SecondLife-Shard | オブジェクトの存在する環境。 "Production" はメイングリッド、 "Testing" はプレビューグリッドです。 | Production |
X-SecondLife-Object-Name | スクリプトが入っているオブジェクトの名前 | Object |
X-SecondLife-Object-Key | スクリプトが入っているオブジェクトのキー | 01234567-89ab-cdef-0123-456789abcdef |
X-SecondLife-Region | オブジェクトが存在する地域名。地域南西端のグローバル座標も表示されます。 | Jin Ho (264448, 233984) |
X-SecondLife-Local-Position | 地域内でのオブジェクトの位置 | (173.009827, 75.551231, 60.950001) |
X-SecondLife-Local-Rotation | スクリプトが入っているオブジェクトの回転 | 0.000000, 0.000000, 0.000000, 1.000000 |
X-SecondLife-Local-Velocity | オブジェクトの速度 | 0.000000, 0.000000, 0.000000 |
X-SecondLife-Owner-Name | オブジェクトのオーナーの名前 | Zeb Wyler |
X-SecondLife-Owner-Key | オブジェクトのオーナーの UUID | 01234567-89ab-cdef-0123-456789abcdef |
CGI 環境では名前全体を大文字にした変数でヘッダーを設置し、ダッシュをアンダースコアに置き換え、 "HTTP_" を名前の前につけます。例えば "X-SecondLife-Object-Name" は "HTTP_X_SECONDLIFE_OBJECT_NAME" となります。 |
参考情報
関数
• | llHTTPRequest |