我的flex应用程序在启动时发送了一些concurent请求。有时需要花费大量时间才能将它们全部取出,所以我将它们requestTimeout
param设置为5秒。另外,我已经定义了一个处理故障事件的方法。我想在超时发生时重新发送请求。
它不起作用。你能看看代码吗?
protected function fatalErrorOccuredInfo(event:FaultEvent):void
{
// get the operation
var operation:mx.rpc.http.AbstractOperation = mx.rpc.http.AbstractOperation(event.target);
operation.url += "?t=" + new Date().getTime();
operation.useProxy = false;
//this should resend a request that caused timeout
operation.send();
}
我检查是否在网络监视器中发送了新请求,但它没有显示任何内容: - (
非常感谢任何帮助。
答案 0 :(得分:0)
WebService类有getOperation函数,返回AbstractOperation。
将其与event.currentTarget.name
所以它会像
var operation:mx.rpc.http.AbstractOperation = myWebService.getOperation(event.currentTarget.name);
operation.send();
我很不确定但如果operation.send()
没有进入结果事件,您可能需要为ResultEvent.RESULT
添加一个事件监听器
答案 1 :(得分:0)
我看到的一个问题是这条线
operation.url += "?t=" + new Date().getTime();
每次发出请求时,都会附加“?t =”+ new Date()。getTime();
虽然这不应该是你的主要问题,但这是一个问题。
private var operationURL:String = "someurl.com/page.php";
private function loadOperation( ):void{
var operation:mx.rpc.http.AbstractOperation = mx.rpc.http.AbstractOperation(event.target);
operation.url = operationURL + "?t=" + new Date().getTime();
operation.useProxy = false;
operation.send();
}
private var retryCount:int = 0
protected function fatalErrorOccuredInfo(event:FaultEvent):void{
// don't want it stuck in an endless loading loop
// 10 count is more then enough
if( retryCount < 10 ){
this.loadOperation( );
++retryCount
}
}
此外,如果安装了FireFox,请获取一个名为HTTPfox的附加组件 HTTPfox将显示从浏览器发出的所有请求