Connexion à des sources externes > Echange de variables avec une source distante > Utilisation de l'objet XML |
Utilisation de l'objet XML
Les méthodes de l'objet XML ActionScript (par exemple, appendChild, removeNode et insertBefore) permettent de structurer les données XML dans Flash qui doivent être envoyées à un serveur et pour manipuler et interpréter les données XML téléchargées.
Les méthodes de l'objet XML suivantes permettent d'échanger des données XML avec un serveur avec la méthode HTTP POST :
La méthode |
|
La méthode |
|
La méthode |
Par exemple, vous pourriez créer un système de courtage qui stockerait toutes ses informations (noms d'utilisateur, mots de passe, identifiants de session, contenu des portefeuilles et informations de transaction) dans une base de données.
Le script côté serveur qui transmet les informations entre Flash et la base de données lit et écrit les données au format XML. Vous pouvez utiliser ActionScript pour convertir les informations récupérées dans l'animation Flash (par exemple, un nom d'utilisateur et un mot de passe) en un objet XML et envoyer ensuite les données au script côté serveur sous forme de document XML. Vous pouvez également utiliser ActionScript pour charger le document XML que le serveur renvoie dans un objet XML devant être utilisé dans l'animation.
Flux et conversion des données entre une animation Flash, un script côté serveur et une base de données
La validation du mot de passe pour le système de courtage nécessite deux scripts : une fonction définie sur l'image 1 et un script qui crée et envoie les objets XML associés au bouton Envoyer du formulaire.
Lorsqu'un utilisateur entre des informations dans les champs de texte de l'animation Flash avec les variables nomDutilisateur et motDePasse, les variables doivent être converties en XML avant d'être transmises au serveur. La première section du script charge les variables dans un objet XML nouvellement créé et appelé XMLDouvertureDeSession. Lorsqu'un utilisateur clique sur le bouton Envoyer, l'objet XMLDouvertureDeSession est converti en une chaîne XML et envoyé au serveur.
Le script suivant est associé au bouton Envoyer. Pour comprendre le script, vous pourrez vous aider des commentaires (indiqués par les caractères //) :
on (release) {
// A. Construire un document XML avec un élément d'ouverture de session
XMLDouvertureDeSession = new XML();
élémentDouvertureDeSession = XMLDouvertureDeSession.createElement("LOGIN");
élémentDouvertureDeSession.attributes.nomDutilisateur = nomDutilisateur;
élémentDouvertureDeSession.attributes.motDePasse = motDePasse;
XMLDouvertureDeSession.appendChild(élémentDouvertureDeSession);
// B. Construire un objet XML contenant la réponse du serveur
XMLréponseDouv = new XML();
XMLréponseDouv.onLoad = pourRéponseDouv;
// C. Envoyer l'élément LOGIN au serveur,
// placer la réponse dans XMLréponseDouv
XMLDouvertureDeSession.sendAndLoad("https://www.imexstocks.com/main.cgi",
XMLréponseDouv);
}
La première section du script génère le code XML suivant lorsque l'utilisateur clique sur le bouton Envoyer :
<LOGIN NOMDUTILISATEUR="JeanSmith" MOTDEPASSE="monSecret" />
Le serveur reçoit le code XML, génère une réponse XML et la renvoie à l'animation Flash. Si le mot de passe est accepté, le serveur envoie la réponse suivante :
<REPONSELOGIN ETAT="OK" SESSION="rnr6f7vkj2oe14m7jkkycilb" />
Ce code XML comprend un attribut SESSION qui contient une ID de session aléatoire unique et qui sera utilisée dans toutes les communications entre le client et le serveur pour le reste de la session. Si le mot de passe est rejeté, le serveur répond par le message suivant :
<REPONSELOGIN ETAT="ECHEC" />
Le nud XML REPONSELOGIN doit être chargé dans un objet XML vide de l'animation Flash. L'instruction suivante crée l'objet XML XMLréponseDouv pour recevoir le nud XML :
// B. Construire un objet XML contenant la réponse du serveur XMLréponseDouv = new XML(); XMLréponseDouv.onLoad = pourRéponseDouv;
La seconde instruction affecte la fonction pourRéponseDouv au gestionnaire XMLréponseDouv.onLoad.
L'élément XML REPONSELOGIN arrive de manière asynchrone, un peu comme les données d'une action loadVariables et est chargé dans l'objet XMLréponseDouv. Lorsque les données arrivent, la méthode onLoad de l'objet XMLréponseDouv est appelée. Vous devez définir la fonction pourRéponseDouv et l'affecter au gestionnaire XMLréponseDouv.onLoad pour qu'il puisse traiter l'élément REPONSELOGIN. Vous devez également affecter la fonction pourRéponseDouv à l'image contenant le bouton d'envoi.
La fonction pourRéponseDouv est définie dans la première image de l'animation. Pour comprendre le script, vous pourrez vous aider des commentaires (indiqués par les caractères //).
function pourRéponseDouv() {
// Récupérer le premier élément XML
var e = this.premierEnfant;
// Si le premier élément XML est un élément REPONSELOGIN avec
// OK pour état, ouvrir l'écran de portefeuille. Sinon,
// ouvrir l'écran d'échec et laisser l'utilisateur réessayer.
if (e.nomDeNoeud == "REPONSELOGIN" && e.attributes.état == "OK") {
// Enregistrer l'identifiant de session pour les futures communications avec le serveur
idSession = e.attributes.session;
// Ouvrir l'écran de portefeuille
gotoAndStop("écranPortefeuille");
} else {
// Le login a échoué ! Ouvrir l'écran d'échec.
gotoAndStop("échecOuvSession");
}
}
La première ligne de cette fonction, var e = this.premierEnfant, utilise le mot-clé this pour faire référence à l'objet XML XMLréponseDouv qui vient d'être chargé avec XML depuis le serveur. Vous pouvez utiliser this car pourRéponseDouv a été invoquée sous la forme XMLréponseDouv.onLoad et donc, même si pourRéponseDouv se révèle être une fonction normale, elle se comporte en fait comme une méthode de XMLréponseDouv.
Pour envoyer le nom d'utilisateur et le mot de passe au format XML au serveur et pour charger une réponse XML dans l'animation Flash, vous pouvez utiliser la méthode sendAndLoad, comme dans l'exemple suivant :
// C. Envoyer l'élément LOGIN au serveur,
// placer la réponse dans XMLréponseDouv
XMLDouvertureDeSession.sendAndLoad("https://www.imexstocks.com/main.cgi", XMLréponseDouv);
Remarque Cette démonstration n'est qu'un exemple et Macromedia ne garantit pas le niveau de sécurité fourni. Si vous implémentez un système sécurisé protégé par mot de passe, assurez-vous de bien comprendre la sécurité réseau.
Pour plus d'informations sur l'utilisation du langage XML pour développer des applications web, consultez Intégration du langage XML et Flash dans une application web. Pour plus d'informations sur l'objet XML consultez XML (objet) dans le dictionnaire ActionScript.