2012-10-24 40 views
0

我試圖從Web服務接收數據,並從Web服務獲取數據,但它的格式爲[object Object]。任何人都可以幫助我解決這個問題。Flex中的AS的Web服務類4

下面是我的web服務代碼:

public class WebServiceAccess 
{ 

    private var webService:WebService; 
    private var serviceOperation:AbstractOperation; 
    private var myValueObjects:ValueObjects; 

    private var method:String; 

    [Bindable] 
    public var employeeData:ArrayCollection; 
    [Bindable] 
    public var employees:ArrayCollection; 

    public function WebServiceAccess(url:String, method:String) 
    { 
     webService = new WebService(); 
     this.method = method; 
     webService.loadWSDL(url); 
     webService.addEventListener(LoadEvent.LOAD, ServiceRequest); 
    } 

    public function ServiceRequest():void 
    { 
     serviceOperation = webService.getOperation(method); 
     serviceOperation.addEventListener(FaultEvent.FAULT, DisplayError); 
     serviceOperation.addEventListener(ResultEvent.RESULT, DisplayResult); 
     serviceOperation.send(); 
    } 

    public function DisplayError(evt:FaultEvent):void 
    { 
     Alert.show(evt.fault.toString()); 
    } 

    public function DisplayResult(evt:ResultEvent):void 
    { 
     employeeData = evt.result as ArrayCollection; 
     Alert.show(employeeData.toString()); 
    } 
} 
+0

什麼後端技術服務於WS? – Neil

+0

@Neil它看起來像提問者使用SOAP。 –

回答

3

首先,evt.result是的ArrayCollection,它是一個對象(除非你的SOAP服務/ WSDL完全搞砸了/格式不正確的XML)。其次,你不能只顯示一個Array或ArrayCollection(或通用對象,甚至)作爲一個字符串(即使.toString()方法似乎總是暗示)無論如何,你必須解析數據從中得到你想要的東西。

現在,WebService類很好,因爲它自動將SOAP服務返回的XML文件解析爲單個可用對象。所以這實際上是困難的部分。

你需要做的是調用對象的各種屬性來獲取你需要的數據。

因此,如果XML回報(看看你的WSDL看到回報應該是什麼,我也強烈建議的soapUI)是這樣的:

<employee name="Josh"> 
    <start date="89384938984"/> 
    <photo url="photo.jpg"/> 
</employee> 

你想顯示「喬希」的照片,你會這樣做。

var name:String = e.result.employee.name; 
var url:String = e.result.employee.photo.url; 

它確實變得更加複雜。如果WSDL允許具有相同級別的多個相同名稱的節點,則確實返回一個ArrayCollection。然後你必須遍歷數組,找到你需要的確切項目。

只記得:WSDL是上帝。期。如果它說可以有多個「員工」節點,那麼即使在測試中沒有看到多個節點,也必須相應地進行編碼。問題是總有可能是多個節點。

+0

這是一個很好的答案+1 – Neil

+0

謝謝你...你的回答對我有用......快樂編碼... – Rocker