Pb Webservice Flash8

yyoupla Messages postés 14 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 12 février 2009 - 1 févr. 2009 à 17:15
yyoupla Messages postés 14 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 12 février 2009 - 12 févr. 2009 à 13:44
Bonjour à tous

Je tente d'obtenir des données depuis un webservice situé sur un autre domaine, le parser et l'afficher dans un datagrid.
J'utilise le composant WebServiceConnector.
Sur le serveur distant qui héberge le webservice, j'ai placé à la racine un fichier crossdomain.xml pour autoriser mon domaine.
()

Dans Flash (Ctrl+Entrée), tout se passe bien.
Les données sont récupérées, parsées et affichées sans problème.

Mais quand j'essaye ailleurs (en lancant le swf directement, ou en http sur mon domaine), rien ne se passe.

J'ai placé des champs dynamiques pour tracer le comportement du WebServiceConnector.
J'ai mis des listeners sur les events "result" et "status".

Dans Flash, je vois que le "status" passe de
"StatusChange" {callsInProgress:1}
à
"StatusChange" {callsInProgress:0}
et ensuite, l'evenement "result" est déclenché. (ce qui lance le parsing et l'affichage)

Mais quand j'essaye en ligne, le "status" reste à
"StatusChange" {callsInProgress:1}
et l'evènement "result" n'est jamais déclenché.

Si je regarde les headers http de la page, je vois que des données sont bien recues du webservice.
(Method:GET Result:200, Type:text.xml;charset=utf-8)

J'ai pensé à un problème de sécurité, donc dans le html j'ai passé la valeur de "allowScriptAccess" sur "always".
Et dans mon Flash, j'ai mis:
System.security.allowDomain("*");
System.security.allowInsecureDomain("*");

Et je ne peux toujours pas accéder aux données...

Quelqu'un aurait-il une idée ?
Merci beaucoup !

2 réponses

yyoupla Messages postés 14 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 12 février 2009
2 févr. 2009 à 14:57
Autre indice, éventuellement :

Si ailleurs, dans l'animation, je fais un
monWebSConnector.trigger();

Je vois "StatusChange" {callsInProgress:1} passer à "StatusChange" {callsInProgress:0}.
Mais aucune donnée ne remonte (l'évènement "result" n'est pas déclenché).
0
yyoupla Messages postés 14 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 12 février 2009
12 févr. 2009 à 13:44
J'essaye donc avec l'exemple de Flash, avec le code suivant sur la 1e et seule frame :
(avec un champ texte qui a le nom d'ocurrence "txt".
import mx.data.components.WebServiceConnector;
var res:Function = function(evt:Object){
    txt.text=evt.target.results;
};
var sta:Function = function(evt:Object){
    txt.text+='\n code= '+evt.code;
        if(evt.code == "WebServiceFault"){
            txt.text+='\n faultcode= '+evt.data.faultcode;
            txt.text+='\n faultstring= '+evt.data.faultstring;
            txt.text+='\n detail= '+evt.data.detail;
        }
};
var wsConn:WebServiceConnector = new WebServiceConnector();
wsConn.addEventListener("result", res);
wsConn.addEventListener("status", sta);
wsConn.WSDLURL = "http://www.flash-mx.com/mm/tips/tips.cfc?wsdl";
wsConn.params = ["Flash"];
wsConn.operation = "getTipByProduct";
wsConn.suppressInvalidCalls = true;

wsConn.trigger();

Et là, rien ne se passe non plus...
Démo :  http://djibc.free.fr/Untitled-1.html
Fla (cs3) : http://djibc.free.fr/Untitled-1.fla

Je ne pige pas, même avec l'exemple de Flash et un webservice "officiel", ca ne fonctionne pas.
J'ai essayé sur plusieurs postes, depuis plusieurs réseau, c'est toujours pareil.

Merci de votre aide.
0