LlRequestURL/ja

From Second Life Wiki
< LlRequestURL
Revision as of 03:49, 12 April 2010 by Mako Nozaki (talk | contribs) (勘違い。元に戻す。)
Jump to navigation Jump to search

要約

関数: 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 で解放するようにしてください。そうでないとメモリリークを起こします。
All Issues ~ Search JIRA for related Bugs

サンプル

このスクリプトは地域が再起動された後、新しい URL をリクエストします。 <LSL>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 !");
       }
   }

}</LSL> 覚えておきたい重要なことは、他の URL をリクエストして、以前のものが解放されていないと、使用中のまま残るということです。次のスクリプトは典型的な例です。

次のコードは、自分の土地で全ての URL を使用することができる場合にのみ試してください。 プリム/スクリプトを削除すると、割り当てられた URL が全て解放されます。 <LSL>//全ての割り当て可能な 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 !");
       }
   }

}</LSL> このスクリプトは、もうおわかりのように、以前の URL を削除せずに新しい URL をリクエストしているので、土地で使用できる全ての URL を使い切ります。

とにかく、以前の URL をグローバル変数に入れておき、llReleaseURL で解放するようにしてください。

関連項目

特記事項

経緯

Search JIRA for related Issues

Signature

function key llRequestURL();
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。