Apr 15
接下来的例子演示了Flex中如何利用<mx:WebService />标签,调用一个ColdFusion的Web Service。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.rpc.events.ResultEvent;
- import mx.rpc.events.FaultEvent;
- import mx.utils.ObjectUtil;
- private var startTime:int;
- private var endTime:int;
- private function button_click():void {
- webService.getMonths.send();
- startTime = getTimer();
- lbl.text = "";
- }
- private function getMonths_result(evt:ResultEvent):void {
- textArea.text = ObjectUtil.toString(evt.result);
- calcTime();
- }
- private function getMonths_fault(evt:FaultEvent):void {
- Alert.show(evt.type);
- calcTime();
- }
- private function calcTime():void {
- endTime = getTimer();
- lbl.text = "total time: " + (endTime - startTime) + "ms";
- }
- ]]>
- </mx:Script>
- <mx:WebService id="webService"
- wsdl="http://www.flash-mx.com/ws/months.cfc?wsdl">
- <mx:operation name="getMonths"
- resultFormat="object"
- result="getMonths_result(event);"
- fault="getMonths_fault(event);" />
- </mx:WebService>
- <mx:ApplicationControlBar dock="true">
- <mx:Button id="button"
- label="get months from web service"
- click="button_click();" />
- <mx:Spacer width="100%" />
- <mx:Label id="lbl" />
- </mx:ApplicationControlBar>
- <mx:TextArea id="textArea"
- editable="false"
- width="100%"
- height="100%" />
- </mx:Application>
ColdFusion中的代码看起来应该是这样的:
- <cfcomponent output="false">
- <cffunction name="getMonths" access="remote" returntype="array" output="false">
- <cfset var monthNames = ListToArray("January,February,March,April,May,June,July,August,September,October,November,December") />
- <cfreturn monthNames />
- </cffunction>
- </cfcomponent>
代码:Peter deHaan 翻译/整理/编译:minidxer
