LlRequestURL/ja

From Second Life Wiki
< LlRequestURL
Revision as of 15:44, 25 February 2016 by SakuraNoel Fayray (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 をリクエストします。

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