2009-08-25 5 views

Répondre

2

Si vous définissez requestTimeout, votre requête déclenchera une erreur lors de l'expiration du délai. Vous pouvez donc simplement ajouter un écouteur d'événement au httpservice faultevent.

+0

valeur requestTimeout fait que l'application vous informe que le durée donnée écoulée. Mais la requête est toujours en vigueur jusqu'à la fin de la connexion. Pour mon navigateur c'est 2m 45 secs. – serkan

3

Soyez au courant de cette limitation charmante HTTPService ...

Si vous définissez la méthode http.requestTimeout, il silencieusement ignorer le fait que vous avez demandé à être une requête POST et supprime toutes les têtes et tous.

Pour une raison quelconque, dans Flex, GET supprime tous les en-têtes.

var http:HTTPService = new HTTPService() 
http = new HTTPService(); 
http.method = "POST"; 
http.addEventListener(ResultEvent.RESULT, result*emphasized text*Handler); 
http.addEventListener(FaultEvent.FAULT, resultHandler); 
http.url = "http://www.example.com/post; 

//http.requestTimeout = 5; //Watch out for this, there go the headers... 

http.method = "POST"; 
http.send(); 

Oh oui, la méthode de réglage = « POST » deux fois était intentionnel, ce qui est encore plus drôle est, si vous l'exécutez dans le débogueur, quand il vient à la dernière ligne, http.send(), et vous regardez à l'état interne de l'objet, il est toujours configuré pour être une requête POST ...

Muppets.

0

Au Flex 4.5 (peut-être plus tôt), il y a un code de défaut spécifique sur l'événement de défaut pour les erreurs de temporisation:

Dans votre gestionnaire de défaut:

if(faultEvent.fault.faultCode == "Client.Error.RequestTimeout"){ 
    trace("TIMEOUT ERROR"); 
} 
Questions connexes