Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

8juil/085

Flash Remoting – Envoyer des requêtes en utilisant NetConnection

Tous les appels à des services Flash Remoting sont fait en utilisant une classe native de Flash Player appelée flash.net.NetConnection. La première étape est toujours de construire une nouvelle instance de NetConnection:

var netConnection:NetConnection = new NetConnection();

Ensuite, vous devez spécifier l'emplacement de la passerelle Flash Remoting. Vous pouvez le faire en appelant la méthode connect(), en passant l'URL de la passerelle:

netConnection.connect("http://www.server.com/flashremoting/gateway");

Appel de méthodes Flash Remoting

Vous pouvez appeler les méthodes Flash Remoting en utilisant la méthode call() sur un objet NetConnection. La méthode call() requiert, au minimum, que vous lui passiez deux paramètres: le nom de la méthode de service à appeler et un objet flash.net.Responder qui spécifie quel listeners doivent traiter la réponse.
Le nom de la méthode doit comprendre le nom complet du service et celui de la méthode, délimités par des points. Le nom du service est toujours le nom par lequel le service est connu par la plateforme. Généralement, c'est le nom complet de la classe ou un alias.
Par exemple, si le service est une classe Java appelée "com.java.Example", le nom du service serait "com.java.Example". Si la méthode du service est appelée testMethod, le nom complet de la méthode devrait être "com.java.Example.testMethod" (à spécifier en tant que premier paramètre de la méthode call().
La classe Responder permet de spécifier les listeners qui vont traiter la réponse de l'appel à la méthode du service. Le constructeur de Responder requiert au moins un paramètre, qui fait référence à la méthode listener qui va traiter la réponse. De manière optionnelle, vous pouvez spécifier un second paramètre qui fera référence à la méthode qui va traiter les réponses de type fault (en cas d'erreur).
Voici un exemple qui appelle la méthode d'un service et définit un handler pour la réponse:

netConnection.call("com.java.Example.testMethod", new Responder(resultHandler));

Passer des paramètres aux méthodes appelées par Flash Remoting

Quand la méthode d'un service attend des paramètres, vous pouvez passer ces paramètres via la méthode call(). Tout paramètre passé à la méthode call après les deux paramètres obligatoires seront passés à la méthode du service comme des paramètres.
Voici un exemple qui passe une String et un Number comme paramètre:

netConnection.call("com.java.Example.testMethod", new Responder(resultHandler), "a", 1);

Articles similaires

Commentaires (5) Trackbacks (0)
  1. Salut,

    Bon début d'explication, dommage que tu ne proposes pas la suite, à savoir ce qui est renvoyé en retour, comment le traiter, dans le cas d'une erreur etc.

    Mais bon, c'est déjà bien de trouver quelque chose fait en flash "pur" sur un blog spécialisé Flex

  2. Salut,
    effectivement, je n'ai pas grand chose en stock pour ce qui est du remoting, j'ai encore pas mal d'autres tutos à écrire avant ^^
    Fabien

  3. Encore moi,

    Si tu reprends un jour ce tuto, ça serait bon de parler de l'envoi d'objets typés dans une classe perso

    Voilà une bonne heure que je suis dessus, j'ai l'impression que je ne peux envoyer que des objets de classe "natives" à Flash (array, string, number …)

    Avec mon objet perso, j'obtiens la célèbre erreur "NetConnection.Call.BadVersion"

    Je sais, avec le tag remoting de Flex, ça passe, pour autant j'aimerais pouvoir le faire avec netConnection histoire de comprendre ce que je fais avant de n'utiliser que des composants tout fait

  4. Salut,
    je ne pense pas que je ferai encore des tutos sur le remoting, ou alors ce serait des traductions :P

    Bonne chance

    Fabien

  5. Ben finalement, j'ai abandonné l'idée d'envoyer des objets typés custom vers amfphp

    S'il ne devait y avoir qu'une raison, je dirais que pour tester le script PHP via le browser par exemple devient vite lourd si on prend des objets en entrée

    A ce jour, je n'utilise les objets typés que dans le sens PHP >>> Flash player

    Merci pour la réponse et bonne continuation


Leave a comment

(required)

Aucun trackbacks pour l'instant