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 load télécharge le code XML depuis une URL et le place dans un objet XML ActionScript.

La méthode send transmet un objet XML à une URL. Toutes les informations renvoyées sont affichées dans une fenêtre de navigateur.

La méthode sendAndLoad envoie un objet XML à une URL. Toutes les informations renvoyées sont placées dans un objet XML ActionScript.

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 nœud 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 nœud 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.