2011-05-15 5 views
0

my flex 응용 프로그램이 시작할 때 몇 가지 동시 요청을 보냅니다. 때로는 모두 가져 오기 위해 많은 시간이 걸리므로 requestTimeout param을 5 초로 설정했습니다. 또한 오류 이벤트를 처리하는 메서드를 정의했습니다. 시간 초과가 발생하면 요청을 다시 보내고 싶습니다. 그래도 작동하지 않습니다. 코드를 살펴볼 수 있습니까?Flex HTTPService 타임 아웃 처리기

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

WebService 클래스는 getOperation 기능이있는 AbstractOperation.

event.currentTarget.name

함께 사용 반환 그래서 ㄱ 것

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

과 같은 전자 뭔가 내가 꽤 잘 모르겠습니다 만 operation.send()은 결과 이벤트에 도착하지 않는 경우, 당신은 내가 볼 ResultEvent.RESULT

+0

흠. 나는이 작업이 null이 아니기 때문에 내가 필요하다고 생각하지 않는다. 그래서 나는 필요한 모든 데이터로 AbstractOperation을 채운다. 또한, 어떤 오류 (NULL 포인터 또는 sth) 얻을지 않습니다. 단지 요청을 보내지 않습니다. 당신의 솔루션은 다르게 행동 할 것이라고 생각하십니까? –

+0

테스트 목적으로 다른 웹 서비스를 호출 해 보았습니까? 'operation'이 null이 아니면, 작동해야합니다. 중단 점을 넣고'operation.send()'가 실제로 실행되었는지 확인 했습니까? :) –

+0

다른 웹 서비스를 시도하지는 않았지만 일부 디버깅을 수행하고 실제로 operation.send()가 실행되었습니다. 나는 심지어 Alert.show()를 다음 줄에 넣었고 항상 나타납니다. 요약하면 작동하지만 작동하지는 않습니다. 쓰레기. –

0

하나 개의 문제에 대한 이벤트 리스너를 추가해야이 줄을 함께 할 수

operation.url += "?t=" + new Date().getTime(); 

요청할 때마다 "? t ="+ 새 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가 브라우저에서 보낸 모든 요청을 표시합니다.