2009-04-29 5 views
0

Quand je vais à http://localhost:3000/hello/sayhello, sorties Rails:Pourquoi cette application Flex "Hello World" ne récupère-t-elle pas le résultat de mon appel HTTPService distant?

hello world! 

en HTML. Mais quand j'exécute cette application "Hello World" de Flex à distance, je vois un bouton et une zone de texte mais il ne capte pas la sortie de l'appel HTTPService vers mon URL Rails. Des idées pourquoi?

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="vertical" 
    backgroundGradientColors="[#ffffff, #c0c0c0]" 
    width="100%" 
    height="100%"> 
    <mx:HTTPService 
     id="helloSvc" 
     url="http://localhost:3000/hello/sayhello" 
     method="POST" resultFormat="text"/> 
    <mx:Button label="call hello service" 
     click="helloSvc.send()"/> 
    <mx:TextInput text="{helloSvc.lastResult}"/> 
</mx:Application> 

Répondre

1

J'ai copié et collé votre code dans une nouvelle application Flex, en modifiant l'URL pour pointer vers un script I sais que fonctionne avec les applications Flex, et cela a très bien fonctionné. J'ai aussi changé mon script côté serveur pour imprimer 'hello world' avec un retour à la ligne, et cela a bien fonctionné aussi.

Votre code Flex semble fonctionner correctement avec du texte brut, mais il est évident que quelque chose ne se connecte pas entre l'affichage des données et les données elles-mêmes. Je ne suis pas expérimenté avec Rails, mais je me demande si votre serveur produit des données qui ne peuvent pas être analysées, et si des exceptions sont avalées.

Voici ma suggestion: changez votre script 'sayhello' pour qu'il imprime simplement un en-tête de contenu et 'hello world' - tout en texte clair. Assurez-vous qu'il est affiché dans le navigateur, puis vérifiez s'il fonctionne également dans l'application Flex. Si c'est le cas, votre application Rails émet probablement un contenu qui doit être analysé, par opposition à simplement définir l'entrée de texte. Si ce n'est pas le cas, vous devrez faire plus de débogage. BTW, j'ai essayé cela avec la sortie de texte brut et la sortie XML. Dans les deux tentatives, j'ai pu voir le contenu dans le champ de saisie de texte.

+0

Erreur stupide. J'appelais file: /// C: /public/bin/flex.html au lieu de http: // localhost: 3000/bin/flex.html. Merci de votre aide. – Bijou

+0

Je suis content que vous l'ayez mis au point :) – bedwyr

1

Je ne suis pas positif, car je ne vois pas le XML que votre service répondait avec mais je pense qu'il est probablement l'une des deux choses:

1) Votre élément n'a pas de formater la demande à votre service. Vérifiez ceci dehors pour un modèle ... Flex 3 Help

Cela pourrait faire que la demande ne soit jamais faite correctement ou votre service s'étouffer sur la demande et ne jamais retourner un résultat. Vous devrez déboguer le service pour voir comment il gère la demande.

2) Votre service renvoie un résultat XML avec des espaces de noms. Dans ce cas, vous aurez besoin de vérifier Another Flex 3 Help sur la façon de gérer les résultats XML au format e4x.

+0

Erreur stupide. J'appelais file: /// C: /public/bin/flex.html au lieu de localhost: 3000/bin/flex.html. Merci de votre aide. – Bijou

Questions connexes