2010-11-07 7 views
0

Je fais une demande HTTPService très simple w/un fichier php qui est sur mon serveur distant:HTTPService ... ne fonctionne pas sur localhost

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      xmlns:halo="library://ns.adobe.com/flex/halo" 
      > 

<fx:Script> 
    <![CDATA[ 
     import mx.rpc.events.ResultEvent; 
     private function check(evt:ResultEvent):void 
     { 
      if(service.lastResult.output == "yes") 

      { 
       test.text = "successful"; 
      } 

     } 

    ]]> 
</fx:Script> 


<fx:Declarations> 

<mx:HTTPService id="service" result="check(event)" showBusyCursor="true" method="POST" url="http://www.example.com/php.php" useProxy="false"> 
</mx:HTTPService> 

</fx:Declarations> 


<mx:VBox width="100%" height="100%"> 

<mx:Button x="10" y="122" label="Submit" id="Submit" click="service.send();"/> 
<mx:TextArea id="test" width="50%" height="50%" /> 

</mx:VBox> 

</s:Application> 

Quand je lance le fichier flash résultant sur ma télécommande serveur, il fonctionne à 100% et test.text est rempli à "succès". Cependant, lorsque je l'exécute sur localhost, test.text est toujours vide. Si je vérifie mon moniteur de réseau dans Flex, le httpservice a réussi, donc crossdomain.xml semble être réglé correctement ... qu'est-ce que je fais mal? Je tourne mes roues depuis un certain temps sans aucun indice. THX!

+1

Avez-vous le débugger sur localhost? Est-ce que HTTPService exécute votre fonction check()? Sinon, essayez d'ajouter un gestionnaire d'erreur à votre HTTPService afin de voir la cause de l'erreur. –

Répondre

0

Il peut être interdit par le fichier crossdomain.xml de votre serveur, ou peut-être que vous n'en avez pas. Lorsque Flash Player recherche des données distantes provenant d'un domaine différent de celui du fichier SWF lui-même, il recherche un fichier à la racine du domaine appelé crossdomain.xml pour s'assurer que le serveur fonctionne correctement.

Vous pourriez vouloir mettre quelque chose comme ça là-dedans qui permet simplement tout, jusqu'à ce que vous avez terminé votre développement local ...

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 

<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="master-only"/> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="SOAPAction"/> 
</cross-domain-policy> 
Questions connexes