在Flex与后台数据交互过程中.一般都是使用以下两个控件:
1、mx:WebService
2、mx:HTTPService
这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.
首先看看如下代码块:
- <mx:WebService id="dataService"
- wsdl="<a href="http://localhost/FlashFlex/DataWebService.asmx?wsdl">http://localhost/FlashFlex/DataWebService.asmx?wsdl</a>" useProxy="false">
- <mx:operation name="HelloWorld" result="onSuccess(event)" fault="onFault(event)" />
- <mx:operation name="GetBook" fault="onFault(event)" result="onObjectSuccess(event)" />
- </mx:WebService>
wsdl属性指定到要访问的WebService的wsdl地址既可,其中定义了两个操作标签(<mx:operation>),分别对应于WebService中定义的WebMethod方法。result属性标记访问WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。以上两个<mx:operation>对应于WebService的WebMethod方法如下:
- /// <summary>
- /// 返回字符串
- /// </summary>
- /// <returns></returns>
- [WebMethod]
- public string HelloWorld()
- {
- return “Hello World”;
- }
如上便是WebService方法定义和在Flex的客户端(mxml)通过<mx:WebService>标签来访问WebService的完整流程,下面我们来看看在Flex的客户端怎么去调用WebService所定义的方法:
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.rpc.events.FaultEvent;
- import mx.rpc.events.ResultEvent;
- /**
- * 向WebService发起请求--调用HelloWorld方法,dataService为<mx:WebService>的id
- * */
- internal function onRequest():void
- {
- dataService.HelloWorld();
- }
- /**
- * 请求成功处理返回结果
- * */
- internal function onSuccess(evt:ResultEvent):void
- {
- Alert.show(evt.result.toString());
- }
- /**
- * 请求失败的处理函数
- * */
- internal function onFault(evt:FaultEvent):void
- {
- Alert.show("访问WebService失败!");
- }
- ]]>
- </mx:Script>

