flex 与 .net 交互【基于WebService的数据访问】

 ·下面介绍Flex与.NET的WebService的数据通信知识点;包括连接WebService,远程调用WebService方法,给WebService方法传递参数等相关知识点。

 

  <mx:WebServiceid="dataService"     wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"     useProxy="false">     <mx:operationname="HelloWorld" result="onSuccess(event)" fault="onFault(event)"/>     <mx:operationname="GetBook" fault="onFault(event)" result="onObjectSuccess(event)"/>   </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  publicstringHelloWorld() 7  { 8    return"HelloWorld"; 9  } 10 11  ///<summary> 12  ///返回一个简单对象 13  ///</summary> 14  ///<returns></returns> 15  [WebMethod] 16  publicBookGetBook() 17  { 18    returnnewBook 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    importmx.controls.Alert; 4    importmx.rpc.events.FaultEvent; 5    importmx.rpc.events.ResultEvent; 6     7    /** 8     *向WebService发起请求--调用HelloWorld方法,dataService为<mx:WebService>的id 9     **/ 10    internalfunctiononRequest():void 11    { 12      dataService.HelloWorld(); 13    } 14     15    /** 16     *请求成功处理返回结果 17     **/ 18    internalfunctiononSuccess(evt:ResultEvent):void 19    { 20      Alert.show(evt.result.toString()); 21    } 22     23     24    /** 25     *请求失败的处理函数 26     **/ 27    internalfunctiononFault(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  ///<paramname="value"></param> 5  ///<returns></returns> 6  [WebMethod] 7  publicstringConvertToUpper(stringvalue) 8  { 9    returnvalue.ToUpper(); 10  }

 

·通过在<mx:WebService>标签下配置<mx:operation>执行该方法就可以访问了,如下:

 

1<mx:operationname="ConvertToUpper" result="onSuccess(event)"fault="onFault(event)"/>    1   /** 2   *向WebService发起请求 3   **/ 4  internalfunctiononRequest():void 5  { 6    //dataService.HelloWorld(); 7    dataService.ConvertToUpper("abcdefg"); 8  }

 

·回到前面看看WebService的方法定义,其中一个方法GetBook是返回的一个Book对象,如果是返回的对象我们在Flex的客户端怎么来获取这个对象的值呢?详细见如下代码示例:

 

1  internalfunctiononObject():void 2  { 3    dataService.GetBook(); 4  } 5   6  internalfunctiononObjectSuccess(evt:ResultEvent):void 7  { 8    //直接通过事件的result属性得到返回值,然后直接访问属性便OK 9    Alert.show(evt.result.Name); 10  } 11   12  /** 13   *请求失败的处理函数 14   **/ 15  internalfunctiononFault(evt:FaultEvent):void 16  { 17    Alert.show("访问WebService失败!"); 18  }

 

·如上便完成了服务端的WebService返回对象到客户端的调用。

你可能感兴趣的:(flex 与 .net 交互【基于WebService的数据访问】)