yyoupla
Messages postés14Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention12 février 2009
-
1 févr. 2009 à 17:15
yyoupla
Messages postés14Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention12 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("*");
yyoupla
Messages postés14Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention12 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é).
yyoupla
Messages postés14Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention12 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;
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.