Difference between revisions of "Http response/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL_Event/ja|event_id=32|event_delay|event=http_response |p1_type=key|p1_name=request_id|p1_desc=llHTTPRequestから返るものと一致 |p2_type=integer|p2_name=st...)
 
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{LSL_Event/ja|event_id=32|event_delay|event=http_response
{{LSL_Event/ja|event_id=32|event_delay|event=http_response
|p1_type=key|p1_name=request_id|p1_desc=[[llHTTPRequest/ja|llHTTPRequest]]から返るものと一致
|p1_type=key|p1_name=request_id|p1_desc={{LSLG/ja|llHTTPRequest}} の復帰値と一致
|p2_type=integer|p2_name=status|p2_desc=HTTPコード(404 あるいは 200 のような)
|p2_type=integer|p2_name=status|p2_desc=HTTP ステータスコード (404 200 のようなもの)
|p3_type=list|p3_name=metadata|p3_desc=HTTP_* 定数と要素の一覧
|p3_type=list|p3_name=metadata|p3_desc=HTTP_* 定数や属性のリスト
|p4_type=string|p4_name=body|p4_desc
|p4_type=string|p4_name=body|p4_desc
|event_desc=タスクが[[llHTTPRequest/ja|llHTTPRequest]]のあるレスポンスを受け取ったときに作動します。
|event_desc=タスクが {{LSLG/ja|llHTTPRequest}} の返答のうちの 1 つを受け取ったときに発生します。
|constants={{{!}}{{Prettytable|style=margin-top:0;}}
|constants={{{!}}{{Prettytable|style=margin-top:0;}}
{{!}}-{{Hl2}}
{{!}}-{{Hl2}}
Line 11: Line 11:
! 説明
! 説明
{{!}}-
{{!}}-
{{!}} [[HTTP_BODY_TRUNCATED/ja|HTTP_BODY_TRUNCATED]]
{{!}} {{LSLG/ja|HTTP_BODY_TRUNCATED}}
{{!}} 0
{{!}} 0
{{!}} integer
{{!}} integer
{{!}} バイトの丸め位置
{{!}} 丸め位置をバイト数で
{{!}}}
{{!}}}
|スペック=<h3>ステータス 499</h3>
|spec=<h3>415 ステータスコード "Unsupported or unknown Content-Type"</h3>
一般的なHTTPステータスコードに加えて、SLでは特殊な'''ステータス'''コード499を提供しています。このコードはSLサーバによって生成されるものであり、リモートウェブサーバによるものではありません。これは以下を知らせることができます。
リモートサーバはリクエストに返答しましたが、返答の Content-Type (XML, JSON, Atom, RSS, PLS などのようなもの) を Second Life サーバは認識できず、スクリプトにそれを渡すことができません。 415 であれば、サーバはリクエストを受け取って返答したと考えてよいでしょう。
<h3>499 ステータスコード</h3>
通常の HTTP ステータスコードに加え、 SL には 499 という特別な '''status''' コードがあります。このコードはリモート Web サーバでは生成されず、 SL のサーバで生成されます。これが意味するものは:
*リクエストタイムアウト (60 秒)
*リクエストタイムアウト (60 秒)
*SSL 失敗
*SSL エラー
*スペースがurl内に含まれています。(URLを[[llEscapeURL/ja|llEscapeURL]]でエスケープしてください。)
*URL の中に空白がある ({{LSLG/ja|llEscapeURL}} で URL をエスケープしてください)  
<h3>502 ステータスコード</h3>
プロクシサーバが上流のサーバから不正なレスポンスを受け取りました。このエラーはインワールドのオブジェクトに llHTTPRequest を送っり、受け取ったオブジェクトが llHTTPResponse で返答しなかったときに発生します。
|caveats
|caveats
|examples=<lsl>key http_request_id;
|examples=<source lang="lsl2">key http_request_id;


default
default
Line 38: Line 42:
         }
         }
     }
     }
}</lsl>
}</source>
|helpers
|helpers
|also_header
|also_header
|also_events
|also_events
|also_functions={{LSL DefineRow||[[llHTTPRequest/ja|llHTTPRequest]]}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llHTTPRequest}}}}
|also_articles
|also_articles
|also_footer
|also_footer
|notes=いずれかの理由で[[llHTTPRequest/ja|llHTTPRequest]]/[[http_response/ja|http_response]]を使っている間、素晴らしいRSSフィードやいくつかのwebコンテンツのフォームは解析不可能であり、SecondLife外でその作業をする必要があるでしょう。これはシミュレータレベルで更なるオーバヘッドが必要なヘッダをチェックして以来、近い将来に変更することが好ましくないからです。
|notes=
===解析にまつわるトラブル===
llHTTPRequest/http_response を使っているときに、なんらかの理由により正当な RSS フィードや他の Web コンテンツが解析できなくなった場合は、Second Life の外で作業する必要が出てくるでしょう。これは近い将来変更されることはないと思われます。ヘッダをチェックするのに、シミュレータレベルでさらにオーバーヘッドが加算されるからです。
 
===Unicode===
 
UTF-8 でコンテンツを提供する際は、必ずサーバで送信ヘッダの "Content-Type" に "charset=utf-8" を入れるように設定しましょう。そうしないと文字化けします。詳細は、 [http://www.w3.org/International/O-HTTP-charset W3C:Setting the HTTP charset parameter] を参照してください。
 
===リクエストヘッダ===


{{LSL Constants/HTTP Headers/ja}}
{{LSL Constants/HTTP Headers/ja}}
Line 52: Line 64:
|cat1=HTTP
|cat1=HTTP
|cat2=XML-RPC
|cat2=XML-RPC
|cat3
|cat3=HTTP/Client
|cat4
|cat4
}}
}}

Latest revision as of 10:03, 21 February 2016

説明

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