我试图通过使用带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?
答案 0 :(得分:2)
您应该尝试在网址末尾添加一个随机数,以防止浏览器缓存:
request = new URLRequest(url + "?n=" + Math.random()*10000);
我知道这很难看,但可能有用。
希望就是这样。