2009-05-30 4 views

Répondre

3

Puisque flex est basé sur les événements, cela devrait être assez simple. Créez simplement 2 objets URLRequest (je suppose que les deux API sont basés sur REST) ​​et définissez vos variables GET. Créez un écouteur d'événement loadComplete pour chacun des objets URLRequest et, dans chacun des eventlisteners, écrivez du code qui traite les résultats des deux API.

Cela devrait le faire.

+0

Merci pour votre réponse futureelite7. la réponse est très belle mais si je mets eventlistener un événement seulement à la fois. alors comment puis-je faire pour les deux api demande objet. Pourriez-vous me dire une url de référence –

+0

vous ajoutez un eventlistener à chacun des deux objets URLRequest. Ainsi, chaque objet URLRequest enverra un événement à l'écouteur. Vous pouvez utiliser le même gestionnaire si vous le souhaitez. – futureelite7

0

Pas "en même temps", non. D'une part, vous n'avez qu'un seul thread (d'arrière-plan) avec lequel travailler, et ce thread ne peut faire qu'une seule chose à la fois, donc quelle que soit l'écriture de votre code, une des requêtes sera toujours lancée en premier. Si vous demandez si vous pouvez envoyer une demande aux deux services en un seul appel, la réponse est non (les deux auront des URL différentes et les API ActionScript ne prendront pas les tableaux comme suit). Paramètres d'URL, ils prennent seulement des chaînes). Cela dit, je suppose que vous pourriez "simuler", pour ainsi dire, en demandant à votre application Flex d'appeler un service que vous avez écrit vous-même - par exemple, en C# - et avoir cet appel de service (synchrone) Google, puis Yahoo, puis retournez le contrôle à votre application Flex avec un ensemble de résultats modifié constitué de tout ce qui est arrivé à revenir de Google et Yahoo, respectivement. À moins d'avoir mal compris (ou d'avoir trop réfléchi) la question. ;)

Voici quelques exemples de code illustrant une façon de gérer l'appel deux services - et non en même temps, mais l'un après l'autre, en utilisant mx.rpc.HTTPService:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()"> 

    <mx:Script> 
     <![CDATA[ 

      import mx.rpc.http.HTTPService; 
      import mx.rpc.events.ResultEvent; 
      import mx.rpc.events.FaultEvent; 

      private function onCreationComplete():void 
      { 
       callGoogle(); 
       callYahoo(); 
      } 

      private function callGoogle():void 
      { 
       var svc:HTTPService = new HTTPService(); 
       svc.url = "http://api.google.com/someservice.xml"; 
       svc.addEventListener(ResultEvent.RESULT, onGoogleResult, false, 0, true); 
       svc.addEventListener(FaultEvent.FAULT, onGoogleFault, false, 0, true); 
       svc.send(); 
      } 

      private function callYahoo():void 
      { 
       var svc:HTTPService = new HTTPService(); 
       svc.url = "http://api.yahoo.com/someservice.xml"; 
       svc.addEventListener(ResultEvent.RESULT, onYahooResult, false, 0, true); 
       svc.addEventListener(FaultEvent.FAULT, onYahooFault, false, 0, true); 
       svc.send(); 
      } 

      private function onGoogleResult(event:ResultEvent):void 
      { 
       trace(event.result); 
      } 

      private function onGoogleFault(event:FaultEvent):void 
      { 
       trace(event.fault.message); 
      } 

      private function onYahooResult(event:ResultEvent):void 
      { 
       trace(event.result); 
      } 

      private function onYahooFault(event:FaultEvent):void 
      { 
       trace(event.fault.message); 
      } 

     ]]> 
    </mx:Script> 

</mx:Application> 

Hope qui aide! Postez des commentaires et je garderai un œil.

Questions connexes