Difference between revisions of "Http response/ja"
Asuka Neely (talk | contribs) (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= | |p1_type=key|p1_name=request_id|p1_desc={{LSLG/ja|llHTTPRequest}} の復帰値と一致 | ||
|p2_type=integer|p2_name=status|p2_desc= | |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=タスクが | |event_desc=タスクが {{LSLG/ja|llHTTPRequest}} の返答のうちの 1 つを受け取ったときに発生します。 | ||
|constants={{{!}}{{Prettytable|style=margin-top:0;}} | |constants={{{!}}{{Prettytable|style=margin-top:0;}} | ||
{{!}}-{{Hl2}} | {{!}}-{{Hl2}} | ||
Line 11: | Line 11: | ||
! 説明 | ! 説明 | ||
{{!}}- | {{!}}- | ||
{{!}} | {{!}} {{LSLG/ja|HTTP_BODY_TRUNCATED}} | ||
{{!}} 0 | {{!}} 0 | ||
{{!}} integer | {{!}} integer | ||
{{!}} | {{!}} 丸め位置をバイト数で | ||
{{!}}} | {{!}}} | ||
| | |spec=<h3>415 ステータスコード "Unsupported or unknown Content-Type"</h3> | ||
リモートサーバはリクエストに返答しましたが、返答の Content-Type (XML, JSON, Atom, RSS, PLS などのようなもの) を Second Life サーバは認識できず、スクリプトにそれを渡すことができません。 415 であれば、サーバはリクエストを受け取って返答したと考えてよいでしょう。 | |||
<h3>499 ステータスコード</h3> | |||
通常の HTTP ステータスコードに加え、 SL には 499 という特別な '''status''' コードがあります。このコードはリモート Web サーバでは生成されず、 SL のサーバで生成されます。これが意味するものは: | |||
*リクエストタイムアウト (60 秒) | *リクエストタイムアウト (60 秒) | ||
*SSL | *SSL エラー | ||
* | *URL の中に空白がある ({{LSLG/ja|llEscapeURL}} で URL をエスケープしてください) | ||
<h3>502 ステータスコード</h3> | |||
プロクシサーバが上流のサーバから不正なレスポンスを受け取りました。このエラーはインワールドのオブジェクトに llHTTPRequest を送っり、受け取ったオブジェクトが llHTTPResponse で返答しなかったときに発生します。 | |||
|caveats | |caveats | ||
|examples=< | |examples=<source lang="lsl2">key http_request_id; | ||
default | default | ||
Line 38: | Line 42: | ||
} | } | ||
} | } | ||
}</ | }</source> | ||
|helpers | |helpers | ||
|also_header | |also_header | ||
|also_events | |also_events | ||
|also_functions={{LSL DefineRow|| | |also_functions={{LSL DefineRow||{{LSLG/ja|llHTTPRequest}}}} | ||
|also_articles | |also_articles | ||
|also_footer | |also_footer | ||
|notes= | |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 09:03, 21 February 2016
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 |