【问题标题】:Flash Builder: Get the result of HTTPService request with AS3 in Flex Mobile AppFlash Builder:在 Flex Mobile App 中使用 AS3 获取 HTTPService 请求的结果
【发布时间】:2012-06-23 19:14:10
【问题描述】:

获得 HTTPService 对象的结果真的让我发疯。当对服务器的调用完成时,将触发一个结果事件。 一切正常,服务器可以无错误地提供 XML 数据或 JSON 数据。但是如何处理事件对象“ResultEvent”,我不清楚。

让我给你看一些代码:

<fx:Declarations>
    <s:HTTPService id="hsConfig"
       url="{IR_BASE_URL}/getconfig.json"
       result="onGetConfig(event)"
       fault="onGetConfigError(event)"
       method="POST" 
       showBusyCursor="false" 
       resultFormat="array"
       makeObjectsBindable="true"
      >
    <s:request xmlns="">
        <post1>Hello</post1>
        <post2>World</post2>
    </s:request>    
    </s:HTTPService>
</fx:Declarations> 

然后是一些动作脚本:

protected function onGetConfig(e:ResultEvent):void
    {
        //var adata:XMLList = XML.(e.result);
        var data:Object = e.result,
        oo : HTTPService = (e.currentTarget as HTTPService);            

    trace( oo.lastResult );
        trace( e.result.lastResult );
        trace( data.cfg );
        trace( e.result.length );
        if( e.result.length )
        {
            trace( e.result[0].length );
        }

}

服务器返回的xml:

<?xml version="1.0" encoding="UTF-8"?>
<cfg>
    <param1>Hello</param1>
    <param2>World</param2>
</cfg>

例如trace( e.result.cfg ) 会引发名称不存在的错误。尝试了几件事并使用调试器查看属性 e.result 中的内容。我可以看到结果是一个带有一个元素 [0] 的 ArrayCollection,该元素是一个 ObjectProxy。

我在互联网上看到了一些“解决方案”,但所有这些都使用数据网格来显示结果,但这不是我想要的。我想像访问一个简单的数组或对象一样访问它。

我该怎么做?

【问题讨论】:

    标签: flash-builder httpservice resultevent


    【解决方案1】:

    尝试将resultFormat="array" 更改为resultFormat="e4x"

    现在e.result.param1 应该返回“Hello”,e.result.param2 应该返回“World”。您可以将它们粘贴到数组、自定义类或将其绑定到视图中

    【讨论】:

    • 感谢您的回复。但是,我决定采用不同的方法,即不使用 XML,而只是使用一个简单的 INI 文件。工作速度快,不那么臃肿(体积更小)。效果很好!
    猜你喜欢
    • 2016-08-09
    • 2010-11-11
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多