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);
    }
}

每当我打开 Flash 应用程序并将其放入并调用 getRequest 时,我都会从 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 回答