2012-06-23 19 views
0

真的讓我瘋狂地得到HTTPService對象的結果。當對服務器的調用完成時,結果事件將被觸發。 這一切都工作正常,服務器可以提供XML數據或JSON數據沒有錯誤。但是如何處理事件對象「ResultEvent」,我不清楚。Flash Builder:在Flex移動應用程序中使用AS3獲取HTTPService請求的結果

讓我告訴你一些代碼:

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

我在互聯網上看到了一些'解決方案',但所有使用datagrid來顯示結果,但這不是我想要的。我想像一個簡單的數組或對象來訪問它。

我該怎麼做?

回答

0

嘗試改變resultFormat="array"resultFormat="e4x"

現在e.result.param1應該回到「你好」和e.result.param2應該返回「世界」,您可以在一個陣列,自定義類堅持他們或將其綁定到一個視圖

+0

感謝您經過很長時間的回答。但是,我決定採取不同的方法,而不是使用XML,而只是一個簡單的INI文件。工作速度快,臃腫(尺寸較小)。很棒! – Codebeat

相關問題