LlRequestURL/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.

要約

関数: 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 をリクエストします。

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 で解放するようにしてください。

関連項目

特記事項

経緯

Search JIRA for related Issues

Signature

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