Http response/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

説明

イベント: 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の関連した項目が参考になるかもしれません。