2009-11-17 4 views
0

Je développe une application AIR avec Flex Builder qui nécessite que je fasse deux demandes HTTPService en même temps. Ils utilisent tous deux des instances différentes de la classe HTTPService AS3. Les deux services appellent une API RESTful qui s'exécute actuellement sur mon hôte local (XAMPP) et prend quelques secondes pour répondre (beaucoup plus vite sur le serveur live).Requêtes HTTPService multiples avec Flex et AIR

Le problème est que la plupart du temps, l'un des appels échoue, mais parfois ils fonctionnent tous les deux. C'est aussi aléatoire quant à l'appel qui échouera.

Merci à l'avance,

Chris

Les deux appels utilisent le code quelque chose comme ça. Ce code est fondamentalement répété dans deux classes.

//in constructor 
brokerageService = new HTTPService(); 
brokerageService.resultFormat = HTTPService.RESULT_FORMAT_E4X; 
brokerageService.addEventListener(ResultEvent.RESULT, onBrokerageResult); 
brokerageService.addEventListener(FaultEvent.FAULT, onFault); 
//call 
public function findBrokerages(type:String, value:String):void{ 
     var url:String = serviceURL + "Contacts/findBrokerage/" + type + "/" + value + ".xml"; 
     brokerageService.url = url; 
     brokerageService.send(); 
} 
//response 
private function onBrokerageResult(e:ResultEvent):void{ 

     var response:XML = brokerageService.lastResult as XML; 
     etc... 
} 
// handle error 
private function onFault(e:FaultEvent):void{ 
     trace(e.target + " " + e.target.url); 
     trace(e); 
     dispatchEvent(new ServiceEvent(ServiceEvent.CONNECTION_PROBLEM, true)); 
} 

Répondre

0

Pouvez-vous coller les détails du message d'erreur que vous obtenez? Êtes-vous sûr que ce n'est pas un problème avec le service XMPP? Essayez de tester le service en envoyant les mêmes requêtes avec un outil comme curl.

+0

message d'erreur: [FaultEvent défaut = [RPC défaut faultString = "Erreur de requête HTTP" faultCode = "Server.Error.Request" faultDetail = "Erreur: [IOErrorEvent type =" bulles « ioError = false cancelable = false eventPhase = 2 text = "Erreur # 2032: Erreur de flux. URL: http://www.domain.com/dummpyAPI.xml "errorID = 2032. URL: http://www.domain.com/dummpyAPI.xml"] messageId = "5477D9B6-DD93-2B11-12E5-02F736E7EC43 "type =" fault "bubbles = false cancelable = true eventPhase = 2] Si vous pouvez offrir des conseils sur la façon dont je pourrais rapidement tester avec CURL qui serait apprécié. –

+0

CURL est disponible sur la plupart des systèmes * nix, mac ou cygwin (pour Windows). Les détails pour l'utiliser sont ici: http://curl.haxx.se/docs/manpage.html. Si vous faites une requête GET, vous pouvez utiliser votre navigateur Web pour le tester. Une autre option est le plugin Poster pour Firefox: https://addons.mozilla.org/en-US/firefox/addon/2691 – elevine

0

J'ai demandé à renvoyer la demande de service si un événement d'erreur se produit, jusqu'à un maximum de trois fois.

Ce n'est pas ma solution idéale, mais cela fonctionne.

Chris

0

je me suis retrouvé obtenir ces erreurs quand je recevais XML malformé en conséquence, le E4X ne/ne pouvait pas le supporter. Essayez de renvoyer une requête ayant échoué, et faites le texte en clair, puis vérifiez la sortie.

+0

Si j'ouvre le XML dans Firefox, il rend correctement. Je trouve généralement que c'est un bon test pour un XML bien structuré. –