为什么这个Flex“Hello World”应用程序无法获取远程HTTPService调用的结果?

时间:2009-04-29 00:56:29

标签: flex web-services httpservice

当我转到http://localhost:3000/hello/sayhello时,Rails输出:

hello world!

as HTML。

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

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

2 个答案:

答案 0 :(得分:1)

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

1)您无权格式化服务请求。检查一下这个模板...... Flex 3 Help

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

2)您的服务正在返回带有名称空间的XML结果。在这种情况下,您需要查看Another Flex 3 Help有关如何处理e4x格式的XML结果的信息。

答案 1 :(得分:1)

我将您的代码复制并粘贴到新的Flex应用程序中,将URL修改为指向我知道的与Flex应用程序一起使用的脚本,并且它运行正常。

我还改变了我的服务器端脚本,用换行符打印'hello world',这也很好。

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

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

BTW,我尝试使用纯文本输出和XML输出。在这两次尝试中,我都能够在文本输入字段中查看内容。