为什么这个Flex“ Hello World”应用程序不能获取我的远程HTTPService调用的结果?
-
03-07-2019 - |
题
当我转到 http:// localhost:3000 / hello / sayhello 时,Rails会输出:
hello world!
as HTML。
但是当我运行这个Flex远程“Hello World”时应用程序,我看到一个按钮和一个文本框但它没有获取HTTPService调用输出到我的Rails网址。有什么想法吗?
<?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>
解决方案
我将您的代码复制并粘贴到新的Flex应用程序中,将URL修改为指向我知道的与Flex应用程序一起使用的脚本,并且它运行正常。
我还改变了我的服务器端脚本,用换行符打印'hello world',这也很好。
您的Flex代码似乎与纯文本一起正常工作,但显然数据显示与数据本身之间没有连接。我对Rails没有经验,但我想知道你的服务器是否输出了无法解析的数据,并且任何异常都被吞没了。
这是我的建议:更改你的'sayhello'脚本,以便它只是打印一个内容标题和'hello world' - 所有这些都是纯文本的。确保它在浏览器中输出,然后查看它是否也适用于Flex应用程序。如果是这样,您的Rails应用程序可能正在输出需要解析的内容,而不是简单地设置为文本输入。如果没有,则需要进行更多调试。
BTW,我尝试使用纯文本输出和XML输出。在这两次尝试中,我都能够在文本输入字段中查看内容。
其他提示
我不是肯定的,因为我看不到您的服务会回复的XML,但我认为这可能是以下两种情况之一:
1)您无权格式化服务请求。检查一下这个模板... Flex 3帮助
这可能导致请求永远不会正常发生,或者您的服务会阻塞请求并且永远不会返回结果。您必须调试服务以查看它是如何处理请求的。
2)您的服务正在返回带有名称空间的XML结果。在这种情况下,您需要查看另一个Flex 3帮助关于如何处理e4x格式的XML结果。