0

Web サービスからデータを受信しようとしていますが、Web サービスからデータを取得していますが、形式は[object Object]. 誰でもこれについて私を助けることができます.

以下は、私の 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());
    }
}
4

1 に答える 1

3

まず第一に、evt.result はArrayCollection ではなく、オブジェクトです (SOAP サービス/WSDL が完全に台無し/不正な XML でない限り)。

第 2 に、単に Array または ArrayCollection (または汎用オブジェクト) を String として表示することはできません (.toString() メソッドは常にそれを暗示しているように見えますが) とにかく、データを解析して必要なものを取得する必要があります。それから。

ここで、WebService クラスは、SOAP サービスが返す XML ファイルを単一の使用可能なオブジェクトに自動的に解析するという点で優れています。それが実際には難しい部分です。

オブジェクトのさまざまなプロパティを呼び出して、必要なデータを取得する必要があります。

したがって、XML が返された場合 (WSDL を見て、返される内容を確認してください。soapUI も強くお勧めします) は次のとおりです。

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

そして、「Josh」と写真を表示したい場合は、これを行います。

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

それはもっと複雑になります。WSDL が同じレベルで同じ名前の複数のノードを許可する場合、ArrayCollection を返します次に、配列をループして、必要な正確な項目を見つける必要があります。

覚えておいてください: WSDL は神です。限目。複数の「従業員」ノードが存在する可能性があると示されている場合は、テストで複数のノードが表示されなくても、それに応じてコーディングする必要があります。問題は、常に複数のノードが存在する可能性があることです。

于 2012-10-25T00:41:38.673 に答える