zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,Flex 数据访问 WebService (上) 狼人:

      Flex 支持格式设置为 SOAP 消息且通过 HTTP 传输的 Web 服务请求和结果。SOAP 提供基于 XML 格式的定义,用于在 Web 服务客户端(如使用 Flex 构建的应用程序)和 Web 服务之间交换结构化和类型化信息。

      在.NET和Flex的数据交互可以通过Web Services访问string,object,datatable,List<>,ArrayList等。

      .NET和Flex的数据示例:

      1、返回对象

      定义返回对象的Web Method:

    [WebMethod]
    public Employee GetEmployee()
    {
    return new Employee
    {
    id
    = 1,
    name
    = "Shawn",
    age
    = 25
    };
    }

      Flex前端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.Alert;
    private function onResult(event:ResultEvent):void
    {
    Alert.show(event.result.name);
    }

    private function onFault(event:FaultEvent):void
    {
    Alert.show("调+event.message);
    }

    private function GetEmployee():void
    {
    this.MyService.GetEmployee.send();
    }
    ]]>
    </mx:Script>
    <mx:Button label="Get Employee" click="GetEmployee()"/>

    <mx:WebService id="MyService" wsdl="http://localhost:4081Flex.asmx?WSDL" useProxy="false" result="onResult(event)" fault="onFault(event)">
    <mx:operation name="GetEmployee"/>
    </mx:WebService>
    </mx:Application>

      运行结果:

    image

      2、返回DataTable

      定义返回DataTable的Web Method:

    [WebMethod]
    public DataTable GetDataTable()
    {
    DataTable dt
    = new DataTable("Employees");
    dt.Columns.Add(
    "id", typeof(int));
    dt.Columns.Add(
    "name", typeof(string));
    dt.Columns.Add(
    "age", typeof(int));

    DataRow dr
    = dt.NewRow();
    dr[
    "id"] = 1;
    dr[
    "name"] = "Shawn";
    dr[
    "age"] = 25;
    dt.Rows.Add(dr);

    dr
    = dt.NewRow();
    dr[
    "id"] = 2;
    dr[
    "name"] = "Jack";
    dr[
    "age"] = 23;
    dt.Rows.Add(dr);

    return dt;
    }

      Flex前端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.Alert;
    private function onResult(event:ResultEvent):void
    {
    }
    private function onFault(event:FaultEvent):void
    {
    Alert.show("调+event.message);
    }
    private function GetDataTable():void
    {
    this.MyService.GetDataTable.send();
    }
    ]]>
    </mx:Script>
    <mx:Panel width="400">
    <mx:DataGrid id="gvEmployee" dataProvider="{this.MyService.GetDataTable.lastResult.Tables.Employees.Rows}" width="100%">
    <mx:columns>
    <mx:DataGridColumn headerText="ID" dataField="id"/>
    <mx:DataGridColumn headerText="Name" dataField="name"/>
    <mx:DataGridColumn headerText="Age" dataField="age"/>
    </mx:columns>
    </mx:DataGrid>
    <mx:ControlBar>
    <mx:Button label="Get DataTable" click="GetDataTable()"/>
    </mx:ControlBar>
    </mx:Panel>
    <mx:WebService id="MyService" wsdl="http://localhost:4081/Flex.asmx?WSDL" useProxy="false" result="onResult(event)" fault="onFault(event)">
    <mx:operation name="GetDataTable"/>
    </mx:WebService>
    </mx:Application> 

      运行结果:

    image

      3、返回List<>

    [WebMethod]
    public List<Employee> GetEmployeeList()
    {
    return new List<Employee>
    {
    new Employee
    {
    id
    = 1,
    name
    = "Shawn",
    age
    = 25
    },
    new Employee
    {
    id
    = 2,
    name
    = "Jack",
    age
    = 23
    }
    };
    }

      Flex前端:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[
    import mx.collections.ArrayCollection;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.Alert;
    private function onResult(event:ResultEvent):void
    {
    var arr:ArrayCollection = this.MyService.GetEmployeeList.lastResult as ArrayCollection;
    gvEmployee.dataProvider=arr;
    }

    private function onFault(event:FaultEvent):void
    {
    Alert.show("调+event.message);
    }

    private function GetEmployeeList():void
    {
    this.MyService.GetEmployeeList.send();
    }
    ]]>
    </mx:Script>

    <mx:Panel width="400">
    <mx:DataGrid id="gvEmployee" width="100%">
    <mx:columns>
    <mx:DataGridColumn headerText="ID" dataField="id"/>
    <mx:DataGridColumn headerText="Name" dataField="name"/>
    <mx:DataGridColumn headerText="Age" dataField="age"/>
    </mx:columns>
    </mx:DataGrid>
    <mx:ControlBar>
    <mx:Button label="Get List" click="GetEmployeeList()"/>
    </mx:ControlBar>
    </mx:Panel>
    <mx:WebService id="MyService" wsdl="http://localhost:4081/Flex.asmx?WSDL" useProxy="false" result="onResult(event)" fault="onFault(event)">
    <mx:operation name="GetEmployeeList"/>
    </mx:WebService>
    </mx:Application>

      运行结果: image

  • 相关阅读:
    Cocos2dx开发(3)——Cocos2dx打包成APK,ANT环境搭建
    Cocos2dx开发(2)——Win8.1下Cocod2dx 3.2环境搭建
    Cocos2dx开发(1)——Win8.1下 NDK r10 环境搭建
    设计模式备忘录(1):适配器模式、依赖注入依赖倒置、空对象模式
    使用latencytop深度了解你的系统的延迟(转)
    操作系统基础
    计算机基础
    说明exit()函数作用的程序
    变量的引用类型和非引用类型的区别
    二进制转16进制JAVA代码
  • 原文地址:https://www.cnblogs.com/waw/p/2162790.html
Copyright © 2011-2022 走看看