Flex提供HTTPService、WebService、RemoteObject和Socket对象来做数据交互。HTTPService,也称XML via HTTPService,就是用get和post方式进行数据传输,同平常的web form提交大致一样,好处是简单、通用性高,可以以任何生成标准XML程序交互,处理大量数据时,速度慢。WebService,通用的叫做SOAP,用database返回数据,没有内建的Pagging功能,不能直接返回DataSet,并且大型数据交互速度慢;比较通用的接口,大多服务器通信都支持。Remoting是基于AMF的数据交互,速度以及性能比较好,数据传输类型比较丰富,传输效率高,对各种后台的支持也比较好;但是需要后台服务端装相应版本的Flash Remoting模块才可以使用。Socket是基于socket通讯,可以建立持久连接,在网游、多人聊天、视频等应用比较有优势。
本文学习通过WebService访问数据。
首先准备后台服务端的Web Service:
-
public class SimpleService : System.Web.Services.WebService {
-
public SimpleService () { } [WebMethod] public string HelloWorld() { return "Hello World"; }
-
[WebMethod] public UserInfo GetUserInfo() { return new UserInfo { UserID = 1, UserName = "Test" }; } } public class UserInfo { public int UserID{get; set;} public string UserName { get; set; } }
检查服务端Web Service:
前端mx:WebService设置:wsdl设置Web Service的URI,load的OnRequest()指定testService调用Web Service的HelloWorld()。onSuccess()方法处理调用成功的信息,onFault()处理调用失败的信息。
-
<?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; private function onRequest():void{ testService.HelloWorld(); }
-
private function onSuccess(event:ResultEvent):void{ trace("访ebService成); trace(event.result.toString()); } private function onFault(event:FaultEvent):void{ trace("访ebService失); trace(event.message.toString()); } ]]> </mx:Script> <mx:WebService id="testService" wsdl="http://localhost/SimpleService.asmx?wsdl" useProxy="false" load="onRequest()" > <mx:operation name="HelloWorld" result="onSuccess(event)" fault="onFault(event)"/> </mx:WebService> </mx:Application>
Debug之后可以看到Console如下的信息: