2

URLLoader で GET URLRequest を使用してサーバーからデータを読み込もうとしていますが、うまくいきます。問題は、一度しか機能しないことです。

public class Settings
{
    private static var request:URLRequest;
    private static var loader:URLLoader;

    public static function getRequest(url:String):void
    {
        request = new URLRequest(url);
        request.method = URLRequestMethod.GET;

        loader = new URLLoader();
        loader.addEventListener(flash.events.Event.COMPLETE, responseHolder);
        loader.load(request);
    }
}

これを挿入して getRequest を呼び出す Flash アプリケーションを開くたびに、URLLoader から正しいデータが取得されます。その後呼び出すたびに、応答が返され、Event.COMPLETE がディスパッチされますが、受信されるデータは常に最初の GET から取得されたデータです。アプリケーションを閉じて再度開いた場合にのみ、GET は実際に最新のデータを取得します。

これをテストするためにリモート デバッグ セッションも実行しましたが、この関数の最初の呼び出しだけが、読み取ろうとしているサーバーと通信することさえあることがわかりました。

私が考えることができる唯一の説明は、データを読み取った後に URLRequest と URLLoader がクリアされていないため、別の GET が呼び出されたときに、サーバーに接続しようとせずに最後に取得したデータを単純に再利用するということです。しかし、私はそれらをクリアしています:

    //in Settings class
    private static function responseHolder(e:flash.events.Event):void
    {
        request = null;
        loader.removeEventListener(flash.events.Event.COMPLETE, responseHolder);
        loader.close();
        loader = null;
    }

GET URLRequests を再度有効にするために何かしなければならないことはありますか?

4

1 に答える 1

2

ブラウザのキャッシュを防ぐために、URLの最後に乱数を追加してみてください。

request = new URLRequest(url + "?n=" + Math.random()*10000);

私はそれが醜いことを知っていますが、それはうまくいくかもしれません。

それだけだといいのですが。

于 2012-07-06T13:41:24.867 に答える