Flex中如何使用WebService类调用一个简单web service的例子

By Minidxer | April 15, 2008

接下来的例子演示了Flex中如何利用<mx:WebService />标签,调用一个ColdFusion的Web Service。

让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):



下面是完整代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white">
  6.  
  7.     <mx:Script>
  8.         <![CDATA[
  9.             import mx.controls.Alert;
  10.             import mx.rpc.events.ResultEvent;
  11.             import mx.rpc.events.FaultEvent;
  12.             import mx.utils.ObjectUtil;
  13.  
  14.             private var startTime:int;
  15.             private var endTime:int;
  16.  
  17.             private function button_click():void {
  18.                 webService.getMonths.send();
  19.                 startTime = getTimer();
  20.                 lbl.text = "";
  21.             }
  22.  
  23.             private function getMonths_result(evt:ResultEvent):void {
  24.                 textArea.text = ObjectUtil.toString(evt.result);
  25.                 calcTime();
  26.             }
  27.  
  28.             private function getMonths_fault(evt:FaultEvent):void {
  29.                 Alert.show(evt.type);
  30.                 calcTime();
  31.             }
  32.  
  33.             private function calcTime():void {
  34.                 endTime = getTimer();
  35.                 lbl.text = "total time: " + (endTime - startTime) + "ms";
  36.             }
  37.         ]]>
  38.     </mx:Script>
  39.  
  40.     <mx:WebService id="webService"
  41.             wsdl="http://www.flash-mx.com/ws/months.cfc?wsdl">
  42.         <mx:operation name="getMonths"
  43.                 resultFormat="object"
  44.                 result="getMonths_result(event);"
  45.                 fault="getMonths_fault(event);" />
  46.     </mx:WebService>
  47.  
  48.     <mx:ApplicationControlBar dock="true">
  49.         <mx:Button id="button"
  50.                 label="get months from web service"
  51.                 click="button_click();" />
  52.         <mx:Spacer width="100%" />
  53.         <mx:Label id="lbl" />
  54.     </mx:ApplicationControlBar>
  55.  
  56.     <mx:TextArea id="textArea"
  57.             editable="false"
  58.             width="100%"
  59.             height="100%" />
  60.  
  61. </mx:Application>

ColdFusion中的代码看起来应该是这样的:

  1. <cfcomponent output="false">
  2.  
  3.     <cffunction name="getMonths" access="remote" returntype="array" output="false">
  4.         <cfset var monthNames = ListToArray("January,February,March,April,May,June,July,August,September,October,November,December") />
  5.         <cfreturn monthNames />
  6.     </cffunction>
  7.  
  8. </cfcomponent>
代码:Peter deHaan 翻译/整理/编译:minidxer

Topics: Flex | No Comments » | 1,443 views Tags: , , , , , ,

Search Posts

赞助商链接

Archives