Flex构建WebService应用实例 (查询城市天气预报)
--->点击阅读更多 ??? 不管我们学习任何语言,第一个先接触到的是Hello World。然后才是其他方面的知识和技巧。学习Flex,你一定也接触过Hello World之类的起始应用,然后就是你可以开始接触MXML和AS3语法,控件,布局等知识。今天这个例子,是提供给已经开始学习Flex的开发人员,目 的是说我们可以通过Flex Builder,在五分钟之内,构造一个连接WebService服务,获取国内城市的天气预报应用。 在了解这个应用之前,请你先做好以下准备(其实也是开发其他Flex应用的准备): 下载Flex Builder 3并安装好它。你可以安装for eclispe插件的版本,也可以安装standalone的版本。安装后的使用并没有什么太大的差别。 接下来就让我们看看如何在五分钟之内完成一个Flex城市天气预报小应用,我想这应该比写HelloWorld更有成就感。 首先,我们会先使用已经准备好的一个天气预报的WebService服务,WebService服务来自WebXML,免费,而且查询信息来自国家气象局,地址如下:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 你可以试着在浏览器内打开上面的这个连接,你会看到浏览器内返回的是XML结构的WSDL文档描述,从中,你可以找到这样的一部分代码:
<s:element?name="getWeatherbyCityName">
??<s:complexType> ????<s:sequence> ??????<s:element?minOccurs="0"?maxOccurs="1"?name="theCityName"?type="s:string"/> ????</s:sequence> ??</s:complexType> </s:element> 其中getWeatherbyCityName就是请求WS返回特定城市天气预报的函数名称,而theCityName就是城市名的参数(其实这个参数你只 要将合法的城市名以String格式传给getWeatherbyCityName就可以了。至于哪个城市在它WebService的服务之列,你可以自 己来挖掘WebService发现 截止做完上面我说的这一步,你大概花了30秒的时间 接下来,你可以通过访问这里去进一步测试此WebService,而且可以在着手写代码前,先看看城市天气预报返回的XML数据构成,以及SOAP1.1和1.2的标准请求 和响应示例,包括HTTP的GET和POST示例。你试着,输入城市为“北京”,你将会得到的返回数据是基于XML格式的数据 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName <ArrayOfString> 现在,你看到了这就是北京近三天的天气预报和北京这个城市的基本信息(来自国家气象局)。作为一名开发者,你会发现这个WebService返回的数据是 XML结构,但是各个元素的名称却都是string,没有其他特征,这种结构最适合通过Flex的ArrayCollection来承载,而不是e4x。 <mx:TextInput id="cityname" text="北京"/>
<mx:WebService id="webService" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl" 这里有几个属性,实例化id是webService,wsdl地址就是我们上面的那个wsdl地址,showBusyCursor设置为true,表示工作 状态,result事件就是当WebService返回结果时,调用一个方法,这个方法,我们叫做onLoade,传递的参数是result event对象,同样,fault事件的响应函数将是faultHandler。然后,我们给Button控件的click事件加入对于 WebService的调用"webService.getWeatherbyCityName(cityname.text)"。
??<mx:Script>
????<![CDATA[ ??????import?mx.collections.ArrayCollection; ??????import?mx.utils.ArrayUtil; ??????import?mx.controls.Alert; ??????import?mx.rpc.events.ResultEvent; ??????import?mx.rpc.events.FaultEvent; ??????private?function?onLoad(event:ResultEvent):void{ ????????//Alert.show(event.result.toString(),"WebService?Results"); ????????var?weatherInfo:ArrayCollection?=?(event.result)?as?ArrayCollection; ????????for(var?i:int=0;i<weatherInfo.length;i++){ ??????????myWeatherReport.text+=weatherInfo[i]+"/n"; ????????} ??????} ??????private?function?faultHandler(event:FaultEvent):void{ ????????Alert.show(event.fault.toString(),’WebService?Error’); ??????} ????]]> ??</mx:Script> 截止到这里,你可能又花了大概一分半钟,总共已经花掉了四分半钟的时间。 怎么样,是不是比做HelloWorld还有成就感?你还可以通过CSS和其他各种方式进一步美化应用,达到很酷的设计要求。 当然,我这五分钟只是一个“噱头”,真正要说的意思,就是Flex开发上手和学习的确非常简单,尤其是对于已经有Java或.net开发经验的朋友,用Flex来制作一个小的应用,更是高效快捷! ?--->点击阅读更多 ??? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |