Flex HTTPService Timeout处理程序

时间:2011-05-15 11:06:20

标签: flex actionscript-3 flex3 air

我的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();

}

我检查是否在网络监视器中发送了新请求,但它没有显示任何内容: - (

非常感谢任何帮助。

2 个答案:

答案 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将显示从浏览器发出的所有请求