Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.
本文以.NET平台下C#语言开发的WebService作为远程数据源,详细介绍Flex与.NET的WebService的数据通信知识点;包括连接WebService,远程调用WebService方法,给WebService方法传递参数等相关知识点。三个标签的使用方法基本上是一样,这里就以<mx:WebService>标签为例进行介绍。
首先看看如下代码块:
1 <mx:WebService id="dataService"
2 wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
3 useProxy="false">
4 <mx:operation name="HelloWorld" result="onSuccess(event)" fault="onFault(event)"/>
5 <mx:operation name="GetBook" fault="onFault(event)" result="onObjectSuccess(event)"/>
6 </mx:WebService>
wsdl属性指定到要访问的WebService的wsdl地址既可,其中定义了两个操作标签(<mx:operation>),分别对应于WebService中定义的WebMethod方法。result属性标记访问WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。以上两个<mx:operation>对应于WebService的WebMethod方法如下:
1 /// <summary>
2 /// 返回字符串
3 /// </summary>
4 /// <returns></returns>
5 [WebMethod]
6 public string HelloWorld()
7 {
8 return "Hello World";
9 }
10
11 /// <summary>
12 /// 返回一个简单对象
13 /// </summary>
14 /// <returns></returns>
15 [WebMethod]
16 public Book GetBook()
17 {
18 return new Book
19 {
20 Id = 1,
21 Name = "三国演义",
22 Author = "罗贯中",
23 Price = 100
24 };
25 }
如上便是WebService方法定义和在Flex的客户端(mxml)通过<mx:WebService>标签来访问WebService的完整流程,下面我们来看看在Flex的客户端怎么去调用WebService所定义的方法:
1 <mx:Script>
2 <![CDATA[
3 import mx.controls.Alert;
4 import mx.rpc.events.FaultEvent;
5 import mx.rpc.events.ResultEvent;
6
7 /**
8 * 向WebService发起请求--调用HelloWorld方法,dataService为<mx:WebService>的id
9 * */
10 internal function onRequest():void
11 {
12 dataService.HelloWorld();
13 }
14
15 /**
16 * 请求成功处理返回结果
17 * */
18 internal function onSuccess(evt:ResultEvent):void
19 {
20 Alert.show(evt.result.toString());
21 }
22
23
24 /**
25 * 请求失败的处理函数
26 * */
27 internal function onFault(evt:FaultEvent):void
28 {
29 Alert.show("访问WebService失败!");
30 }
31 ]]>
32 </mx:Script>
通过上面的调用,就可以完成一个Flex和.NET WebService的交互。当然我们在Flash/Flex的客户端调用WebService也是可以传递参数的,如下WebService的WebMethod定义:
1 /// <summary>
2 /// 将传递进来的参数转化为大写字符返回
3 /// </summary>
4 /// <param name="value"></param>
5 /// <returns></returns>
6 [WebMethod]
7 public string ConvertToUpper(string value)
8 {
9 return value.ToUpper();
10 }
通过在<mx:WebService>标签下配置<mx:operation>执行该方法就可以访问了,如下:
1 <mx:operation name="ConvertToUpper" result="onSuccess(event)" fault="onFault(event)"/>
1 /**
2 * 向WebService发起请求
3 * */
4 internal function onRequest():void
5 {
6 //dataService.HelloWorld();
7 dataService.ConvertToUpper("abcdefg");
8 }
另外,我们还可以通过<mx:request>来传递参数,这里只需要知道<mx:request></mx:request>里的参数配置与WebService提供的WebMethod方法参数同名就OK。
回到前面看看WebService的方法定义,其中一个方法GetBook是返回的一个Book对象,如果是返回的对象我们在Flex的客户端怎么来获取这个对象的值呢?详细见如下代码示例:
1 internal function onObject():void
2 {
3 dataService.GetBook();
4 }
5
6 internal function onObjectSuccess(evt:ResultEvent):void
7 {
8 //直接通过事件的result属性得到返回值,然后直接访问属性便OK
9 Alert.show(evt.result.Name);
10 }
11
12 /**
13 * 请求失败的处理函数
14 * */
15 internal function onFault(evt:FaultEvent):void
16 {
17 Alert.show("访问WebService失败!");
18 }
如上便完成了服务端的WebService返回对象到客户端的调用。
文章来自学IT网:http://www.xueit.com/html/2009-02/21_572_00.html
分享到:
相关推荐
Flex与.NET的互操作主要依赖于WebService,因为WebService提供了一种跨平台的数据交换方式。在.NET环境中,我们可以创建一个ASP.NET WebService(ASMX或WCF服务),然后在Flex中通过HTTPService调用这些服务的方法。...
而.NET Webservice是微软.NET Framework提供的一种服务导向架构,用于构建可互操作的Web服务。 在Flex中,AS3.0是主要的编程语言,它允许开发者创建动态、交互式的用户界面并与服务器进行数据交换。AS3.0拥有面向...
在与.NET互操作时,通常使用HTTPHandler作为WebService的实现方式。HTTPHandler是ASP.NET中的一种处理器,它可以处理HTTP请求并返回响应。在文件上传的场景中,HTTPHandler接收由Flex客户端发送的文件数据,将其保存...
在服务器端,可以使用ASP.NET或WCF(Windows Communication Foundation)来处理业务逻辑和数据访问,然后通过AMF将结果返回给Flex客户端。这种结合方式使得前后端通信高效、快速。 4. Flex端源码解析: Flex端源码...
XML因其开放性、简单性、互操作性和可扩展性等特性,成为Flex与后台系统(如J2EE)之间数据交换的理想选择。XML文档可以轻松地从数据库获取数据,经过处理后传递给客户端的Flex应用程序,或者接收客户端修改后的数据...
本章节主要介绍Flex框架及其与数据访问技术的关系,同时对比了Flex与其他传统技术如JSP、ASP等的不同之处。 **Flex与其它数据访问技术的比较** Flex作为一种灵活的用户界面框架,它的数据处理方式与传统的基于HTML...
文件`Flex与_NET互操作 使用FileReference+HttpHandler实现文件上传-下载_Flex_脚本之家.htm`可能包含一个完整的示例代码,演示了如何在Flex中使用`FileReference`类与.NET的HttpHandler协同工作,实现文件的上传和...
RIA技术应当支持如HTML/HTTP、XML、SOAP/WebService等标准协议和技术,以确保与其他系统的互操作性。 ##### 2.4 保留现有的工具 开发者希望能够在现有的编辑器或集成开发环境中继续工作,如Eclipse、Borland ...
开发者通过一系列的文章分享了关于ActionScript 3.0、Flex与.NET互操作以及FMS3的相关知识,并计划通过一个视频聊天室的案例来深入探讨这些技术。 二、技术方案 1. 媒体服务器:选用Flash Media Server 3,它能处理...