Web services Flex4中的Web服务类

Web services Flex4中的Web服务类,web-services,actionscript-3,flex4,Web Services,Actionscript 3,Flex4,我试图从Web服务接收数据,并从Web服务获取数据,但它是[object object]的形式。有人能帮我吗 下面是我的web服务的代码: public class WebServiceAccess { private var webService:WebService; private var serviceOperation:AbstractOperation; private var myValueObjects:ValueObjects; priva

我试图从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());
    }
}

首先,evt.result不是ArrayCollection,它是一个对象(除非您的SOAP服务/WSDL完全是错误的XML)

其次,您不能仅将数组或ArrayCollection(或泛型对象,甚至)显示为字符串(尽管.toString()方法似乎总是暗示这一点),无论如何,您必须解析数据以从中获得所需的内容

现在,WebService类很好,因为它自动将SOAP服务返回的XML文件解析为单个可用对象。这实际上是最难的部分

您需要做的是调用对象的各种属性来获取所需的数据

因此,如果XML返回(查看您的WSDL以了解返回应该是什么,我也强烈建议使用soapUI)是这样的:

它确实变得更复杂了。如果WSDL允许在同一级别使用相同名称的多个节点,它将返回ArrayCollection。然后你必须在数组中循环,找到你需要的确切项目


只要记住:WSDL就是上帝。时期如果它说可以有多个“employee”节点,那么即使在测试中没有看到多个节点,也必须相应地编写代码。问题是总是可能有多个节点。

首先,evt.result不是ArrayCollection,它是一个对象(除非您的SOAP服务/WSDL完全错误/格式不正确的XML)

其次,您不能仅将数组或ArrayCollection(或泛型对象,甚至)显示为字符串(尽管.toString()方法似乎总是暗示这一点),无论如何,您必须解析数据以从中获得所需的内容

现在,WebService类很好,因为它自动将SOAP服务返回的XML文件解析为单个可用对象。这实际上是最难的部分

您需要做的是调用对象的各种属性来获取所需的数据

因此,如果XML返回(查看您的WSDL以了解返回应该是什么,我也强烈建议使用soapUI)是这样的:

它确实变得更复杂了。如果WSDL允许在同一级别使用相同名称的多个节点,它将返回ArrayCollection。然后你必须在数组中循环,找到你需要的确切项目


只要记住:WSDL就是上帝。时期如果它说可以有多个“employee”节点,那么即使在测试中没有看到多个节点,也必须相应地编写代码。问题是总是可能有多个节点。

什么后端技术为WS提供服务?@Neil看起来询问者在使用SOAP。什么后端技术为WS提供服务?@Neil看起来询问者在使用SOAP。
<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;