LlRequestURL/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: key llRequestURL( );
スクリプトで使用する 1 個の HTTP:// URL をリクエストします。リクエストの結果、 http_request イベントが発生します。
http_request イベントの中で結果を識別するために使用するハンドル値を key で返します。
警告
- 地域が (再) 起動されると、HTTP server の URL は自動的に解放され、使用できなくなります。
- CHANGED_REGION_START を使ってこれを検出し、新しい URL がリクエストされるようにしてください。
- 使用可能な URL の数には制限があります。言い換えると、スクリプトはそれだけの数の他で使用されていない URL を持つことができます。詳細は、LSL http_server#Resource Limitations を参照してください。
- URL を放棄するときには、常に llReleaseURL で解放するようにしてください。そうでないとメモリリークを起こします。
サンプル
このスクリプトは地域が再起動された後、新しい URL をリクエストします。
string url;
default {
state_entry() {
//URL をリクエストします
llRequestURL();
}
changed(integer What) {
//地域が再起動された場合
if (What & CHANGED_REGION_START) {
//新しい URL をリクエストします
llRequestURL();
}
}
http_request(key ID, string Method, string Body) {
if (Method == URL_REQUEST_GRANTED) {
//URL を持ち主に発言します
url = Body;
llOwnerSay(url);
} else if (Method == URL_REQUEST_DENIED) {
llOwnerSay("No URLs free !");
} else if (Method == "GET") {
llHTTPResponse(ID, 200, "Hello there !");
}
}
}
覚えておきたい重要なことは、他の URL をリクエストして、以前のものが解放されていないと、使用中のまま残るということです。次のスクリプトは典型的な例です。
次のコードは、自分の土地で全ての URL を使用することができる場合にのみ試してください。 プリム/スクリプトを削除すると、割り当てられた URL が全て解放されます。
//全ての割り当て可能な URL を一気に割り当てます
//癇に障ります
//スクリプトを削除するか、プリム/オブジェクトを取り払うと、URL が解放されます
default {
state_entry() {
//URL をリクエストします
llRequestURL();
}
http_request(key ID, string Method, string Body) {
if (Method == URL_REQUEST_GRANTED) {
//新しい URL アドレスと空き URL 数を表示します
llSetText( (string)llGetFreeURLs() + "\n" + Body, <1, 1, 1 >, 1);
//URL をリクエストします
llRequestURL();
} else if (Method == URL_REQUEST_DENIED) {
llSetText("No URLs free !", <1, 0, 0 >, 1);
} else if (Method == "GET") {
llHTTPResponse(ID, 200, "Hello there !");
}
}
}
このスクリプトは、もうおわかりのように、以前の URL を削除せずに新しい URL をリクエストしているので、土地で使用できる全ての URL を使い切ります。
とにかく、以前の URL をグローバル変数に入れておき、llReleaseURL で解放するようにしてください。関連項目
関数
• | llRequestSecureURL | |||
• | llGetFreeURLs | |||
• | llReleaseURL | |||
• | llHTTPResponse | |||
• | llGetHTTPHeader |
記事
• | LSL http server |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。