Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: XMLConnector.direction = 'send' ... serait-ce un leure? précision

Envoyé: 11 décembre 2004, 11h57 par Oznog


Salut,

VOILÀ UN AUTRE EXEMPLE DE LA PLUS MAUVAISE DOCUMENTATION JAMAIS FAIT PAR UNE ENTREPRISE EN INFORMATIQUE. Macromedia démontre encore une fois sa total incapacité à bien documenter sa propre technologie. Bravo!

Tu as fait deux erreurs. Et c'est normale que l'on retrouve autant de messages sur les forums car c'est deux points sont toujours dificile à saisir. Sasn parler les erreur de Macromedia, ses exemple online très limité (pour vendre ses cours). Puisque je travail en dur avec AS2 sasn composante je ne suis pas famillier. D'.auitre part cet composante n'est pas fait vraiment pour ça bien que se soit possible. Tu peux ien ne rien trouvé sur le sujet. voilà je tester ça moi même un fois pour toute!

1. Première erreur, as-tu vu une méthode ou une class "save" ? Send envoie des données mais ne sauve absolument rien. C'est effectivement comme ta conclusion le suggère utilisé pour envoyer des données à un script serveur, SEUL a avoir les autorisation nécessaire pour sauver quoi que se soit sur le disque dûr d'un serveur.

D'ailleurs pense s'y quelques secondes. Imagine que je cré un produit aussi puissant que Flash et que j'ajoute une fonctionnalité pour sauver des valeurs sur un serveur Web. Pense tu que les serveur Web ET TOUS LES SERVEURS WEB du monde me laisseront sauver sur leur disque dûr?

Bisn sûr que non. Si le ASP ou le PHP permet de sauver c'est que ces langages sont exécuté directement sur le serveur. Il faudrait la même chose avec Flash. C'est ce que faisait "Generator" à l'époque, on devait l'installer sur le serveur.

En résumé, cette fonctionnalité ne permet pas de sauver quoi que se soit sur le serveur et pas plus que localement.

2. Erreur fréquente, on pense devoir ouvrir un popUp pour soumettre une requète à un script serveur. Ce qui est tout à fait faux. Parcequ'on pense devoir utiliser un getUrl!

Bien sûr le getUrl fait le travail mais ce n'est pas son rôle. Le vieux loadVariables ou loadVariablesNum et le nouveau sendAndLoad permettent d'envoyer des données à un script serveur et de récupérer l'état d'une transaction sans l'ouverture d'une fenêtre.

MAIS, ton connecteur aussi. C'est le "send" qui envoie mais ça ne se fait pas tout seul, tu dois avoir un script serveur au bout pour sauver. SANS OUVRIR UNE FENÊTRE. Le problème c'est que c'est une composante, fait pour simplifier (enfin!) le processus. Tu peux aussi le faire manuellement en AS2 carrément avec l'objet XML :

monXML = new XML()

3. Maintenant reste un petit détail. Le Flash se contente d'envoyer des données dasn les deux cas. C'est donc le script serveur qui fait la création du XML et là c'est une autre histoire. Je me contente d'un exemple simple.

http://www.trucsweb.com/Flash/twSauveXml.asp?var1=allo&var2=toto&var3=coco

Ce script ASP ne fait que récupérer les paramètres (un nombre illimité) et créer un fichier XML à la vollé QUI N'EST PAS SAUVÉ SUR LE DISQUE et qui n'utilise même pas l'objet XML. C'est seulement pour démontrer qu,il reçoi des valeurs du Flash et qu'il retourne un XML que Flash pourra exploité.

4. Côté Flash maintenant. C'est ici le vide. Absolument rien sur le Web anglophone (je n'ai même pas pas cherché en français) que des bride de code. Tout semble très facile, envoyer avec le "param" et "send/recive", récupérer et afficher. Le problème est comment récupérer les paramètre avec le script serveur. Je travail le dessus...

Bon quelques heures plus tard ;-)

Rien à faire, l'envoie de données externe se fait en ajoutant un "param" qui doit être un XML valide (enfin selon Macromedia), de cette façon selon Macromedia :

var sendXML = new XML("<login username='Mort'><password mot='Guacamole'>");

J'ai beau chercher c'est ici que la bas blesse. Et d'aileurs on voit tout de suite le niveau de compréhension du XML de Macromedia!

L'envoie n'est pas "propre". En fait ce que ce XML envoie c'est :

Paramètre 1 : <loginusername
Valeur 1 : "Mort">
Paramètre 2 : <passwordmot
Valeur 2 : "Guacamole">

1. L'espace entre login et username se perd. Et l'ajout d'un espace encodé chr(33) n'y change rien! Le problème c'est qu'il n'y a pas 36 solutions côté serveur avec une requête HTTP, un item et une valeur...

J'ai passé un bon 2 heures à tenter toutes sortes de possibilités. Logiquement on devrait avoir :

var sendXML = new XML("<PARAM>valeur</PARAM>");

Mais non! Je donne quand même un exemple complet pour ceux qui veulent perdre leur temps mais je conseil à ceux qui veulent créer un fichier dynamique en Flash d'utiliser sendAndLoad pour pour passer les valeurs au script serveur et créer le document XML. ET si vous voulez utiliser le "Connector" pour lire, aucun problème bien que je conseil encore une fois le bon monXML = new XML()...

1. Glisser la composante "XMLConnector" sur la scène, elle s'ajoutera automatiquement dans la libtrairie. Vous pouvez ensuite la détruire de la scène. (Je n'arrive pas à la glisser directement dasn la librairie malgré les dirent de Macromedia).

2. Puis copier sur la première image-clé.

import mx.data.components.XMLConnector;
// Création d'un écouteur pour afficher le résultat
// Avec la fonction result
var xmlListener:Object = new Object();
xmlListener.result = function(evt:Object) {
trace("results:");
trace(evt.target.results);
trace("");
};

// Création du connecteur et ajout de l'écouteur
var myXMLConnector:XMLConnector = new XMLConnector();
myXMLConnector.addEventListener("result", xmlListener);

// Créaton du XML pour passer les paramètres
// c'Est ici qu'il faut trouver la bonne syntaxe.
var sendXML = new XML("<login username='oznog'><password mot='allo'>");
// Forcer l'encodage sinon ça ne fonctionne absolument pas
// Encore une fois on voit l'amateurisme, pourquoi ce n'est pas par défaut!!
sendXML.addRequestHeader("Content-Type", "application/x-www-form-urlencoded")
// Enfin, passer le XML paramètre dasn l'objet connetor
myXMLConnector.params = sendXML

// La direction envoie et retrouve
myXMLConnector.direction = "send/receive";

// Le url du traitement serveur
myXMLConnector.URL = "http://www.trucsweb.com/Flash/twSauveXml2.asp";;

// initialise la fonctions de l'écouteur et du connecteur
myXMLConnector.trigger();
myXMLConnector.trigger();

Ciao
Oznog


Réponses

 sp spRe: XMLConnector.direction = 'send' ... serait-ce un leure? précision toph11/12/2004
 sp spRe: XMLConnector et sont utilité Oznog12/12/2004
 sp spLe XML pour les nuls ...  toph12/12/2004
 sp spRe: Le XML pour les nuls ... solution au pb de cache toph12/12/2004
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@