IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

HTTPService : récupérer les informations de la requête dans la réponse


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut HTTPService : récupérer les informations de la requête dans la réponse
    Bonjour,

    J'ai un petit problème avec l'utilisation du composant HTTPService : j'aimerais, au moment de la récupération du retour de ma requête, avoir accès aux informations de la requête (URL, paramètres envoyés, etc).

    Mon cas concret (simplifié) est le suivant :
    - j'ai une datagrid de 2 colonnes contenant dans la première de gauche un identifiant unique et dans la colonne de droite une valeur associée (numérique, chaîne de caractères, peu importe).
    - pour chaque ligne de mon datagrid, je souhaite envoyer une requête ayant en paramètre (ou dans l'URL dans une architecture un peu plus orientée REST) l'identifiant de la colonne de gauche.
    - l'URL appelée me retourne uniquement la valeur associée à l'identifiant que je lui ai envoyé.

    Le problème, c'est qu'au moment où je reçois la réponse, je ne reçois que la valeur et je ne sais plus à côté de quel identifiant je dois afficher cette valeur. D'où mon besoin, au moment de la réponse, d'accéder aux informations de la requête afin de s'avoir l'identifiant qui a été envoyé.

    J'ai un peu cherché sur le web et ici mais je n'ai trouvé aucun sujet s'apparentant à ma question.

    Est-ce possible ? Ma méthode est-elle complétement foireuse ?

    Merci d'avance pour vos réponse.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    J'ai trouvé, même s'il reste un petit comportement bizarre.

    En fait il faut utiliser les composants AsyncToken et AsyncResponder, qui servent à faire le lien entre un appel et sa réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    private function loop():void {
       var token:AsyncToken;
       var responder:AsyncResponder;
       var service:HTTPService;
       var myDatas:Array;
     
       myDatas = ['titi', 'toto', 'tutu'];
     
       service = new HTTPService();
       service.url = 'http://monurl.com';
     
       responder = new AsyncResponder(resultHandler, faultHandler);
     
       for each (var s:String in myDatas) {
          token = service.send(s);
          token.maValeur = s;
          token.addResponder(responder);
       }
    }
     
    private function resultHandler(e:ResultEvent, token:AsyncToken = null):void {
       trace(e.token.maValeur);
    }
     
    private function faultHandler(e:FaultEvent, token:AsyncToken = null):void {
       // TODO
    }
    Le truc bizarre (et pénible), c'est que ma fonction resultHandler semble être appelée deux fois pour chaque cycle de ma boucle.

    Pourtant je n'ai bien qu'un seul responder associé à mon token.

    Quelqu'un aurait-il une idée sur le comment du pourquoi de ce comportement ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    J'ai pas trouvé d'explication mais le moyen d'empêcher ce double appel de mon handler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    private function loop():void {
       var token:AsyncToken;
       var service:HTTPService;
       var myDatas:Array;
     
       myDatas = ['titi', 'toto', 'tutu'];
     
       service = new HTTPService();
       service.url = 'http://monurl.com';
       service.addEventListener(ResultEvent.RESULT, resultHandler);
     
       for each (var s:String in myDatas) {
          token = service.send(s);
          token.maValeur = s;
       }
    }
     
    private function resultHandler(e:ResultEvent, token:AsyncToken = null):void {
       trace(e.token.maValeur);
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer les champs d'une requête dans une URL
    Par l.thomas67 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/04/2014, 15h27
  2. Réponses: 2
    Dernier message: 04/02/2014, 17h13
  3. Réponses: 2
    Dernier message: 13/10/2011, 16h08
  4. Récupérer les informations d'un contrôle dans un formulaire
    Par SoftAbdou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/06/2009, 13h12
  5. Réponses: 2
    Dernier message: 23/01/2008, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo