Flex HTTPService Timeout обработчик - PullRequest
0 голосов
/ 15 мая 2011

мое гибкое приложение отправляет несколько параллельных запросов при запуске.Иногда для их извлечения требуется много времени, поэтому я установил для них requestTimeout параметр на 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();

}

Я проверяю, отправлен ли новый запрос в Network Monitor, но он ничего не показывает: - (

Любая помощь будет оченьоценили.

Ответы [ 2 ]

0 голосов
/ 17 мая 2011

Я вижу одну проблему с этой строкой

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 покажет вам все запросы, сделанные из браузера

0 голосов
/ 15 мая 2011

Класс WebService имеет функцию getOperation , которая возвращает AbstractOperation .

Используйте его с event.currentTarget.name

Так что это будет что-то вроде

var operation:mx.rpc.http.AbstractOperation = myWebService.getOperation(event.currentTarget.name);
operation.send();

Я не совсем уверен, но если operation.send() не попадет в результат событияВозможно, вам придется добавить прослушиватель событий для ResultEvent.RESULT

...