Http response/ja

From Second Life Wiki
Jump to navigation Jump to search

説明

イベント: http_response( key request_id, integer status, list metadata, string body ){ ; }

タスクが 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 を参照してください。

リクエストヘッダ

llHTTPRequest を呼び出す過程でシミュレータにより送信されるヘッダ
ヘッダ 説明 データ例
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
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。