0

当我访问http://localhost:3000/hello/sayhello时,Rails 输出:

hello world!

作为 HTML。

但是,当我运行这个 Flex 远程“Hello World”应用程序时,我看到了一个按钮和一个文本框,但它没有接收到我的 Rails url 的 HTTPService 调用的输出。任何想法为什么?

<?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>
4

2 回答 2

1

我不肯定,因为我看不到您的服务会回复的 XML,但我认为这可能是两件事之一:

1)您没有元素来格式化对您的服务的请求。查看此模板以获取模板... Flex 3 帮助

这可能会导致请求永远无法正确发出,或者您的服务会阻塞请求并且永远不会返回结果。您必须调试服务以查看它如何处理请求。

2) 您的服务正在返回带有命名空间的 XML 结果。在这种情况下,您将需要查看有关如何处理 e4x 格式的 XML 结果的另一个 Flex 3 帮助。

于 2009-04-29T01:15:47.640 回答
1

我将您的代码复制并粘贴到了一个新的 Flex 应用程序中,修改了 URL 以指向一个我知道适用于 Flex 应用程序的脚本,它工作得很好。

我还更改了我的服务器端脚本以使用换行符打印“hello world”,并且效果也很好。

您的 Flex 代码似乎可以正常使用纯文本,但数据显示和数据本身之间显然没有连接。我没有使用 Rails 的经验,但我想知道您的服务器是否正在输出无法解析的数据,并且任何异常都被吞没了。

这是我的建议:更改您的“sayhello”脚本,使其简单地打印内容标题和“hello world”——所有内容均为纯文本。确保它在浏览器中输出,然后查看它是否也适用于 Flex 应用程序。如果是这样,您的 Rails 应用程序可能正在输出需要解析的内容,而不是简单地设置为文本输入。如果没有,您将需要进行更多调试。

顺便说一句,我尝试了纯文本输出和 XML 输出。在这两次尝试中,我都能够查看文本输入字段中的内容。

于 2009-04-29T01:29:23.427 回答