Flex调用Webservice实现天气预报

开发 后端
本文向大家描述一下Flex如何调用Webservice实现天气预报,Flex调用Webservice有多种方法,可以通过FlexBuilder提供的管理Webservices的工具解析WSDL文档生成本地调用类。

你对Flex调用Webservice实现天气预报的方法是否熟悉,这里和大家分享一下,Flex调用Webservice有多种方法,可以通过ActionScript中Webservice类来实现。还有就是使用<Webservice>组件实现。

Flex调用Webservice实现天气预报

Flex调用Webservice有多种方法,可以通过FlexBuilder提供的管理Webservices的工具解析WSDL文档生成本地调用类。也可以通过ActionScript中Webservice类来实现。还有就是使用<Webservice>组件实现。这次我使用的是最后一种,感觉这种方法较为简洁。

1.构建界面

用于接受用户输入及结果输出。包括:1个Text输入组件,1个按钮组件,10个标签组件

2.添加Webservice组件

根据Web服务提供者的说明,构建Webservice组件。代码如下:

  1. <mx:WebServiceidmx:WebServiceid="ws"wsdl="http://www.webxml.com.cn/  
  2. WebServices/WeatherWebService.asmx?wsdl"  
  3. useProxy="false"showBusyCursor="true"> 
  4. <mx:operationnamemx:operationname="getWeatherbyCityName" 
  5. result="resultOK()"> 
  6. <mx:request> 
  7. <theCityName> 
  8. {city.text.toString()}  
  9. </theCityName> 
  10. </mx:request> 
  11. </mx:operation> 
  12. </mx:WebService> 

注意:operation组件中的name属性需要和待使用的方法的名字相同。result的属性是在调用方法成功后执行的ActionScript方法。operation还有其他属性,鉴于例子很简单,就不一一使用了。

3.编写ActionScript方法

本例中使用了三个方法:resultOK()用于显示结果的,showMessage()用于显示说明,getfocus()用于当输入栏得到焦点时清空输入栏内容的。下面是resultOK()的分析:

  1. publicfunctionresultOK():void{//显示接受的结果  
  2. arrayResult=newArrayCollection();  
  3. arrayResult=ws.getWeatherbyCityName.lastResult;  
  4.  
  5. //显示今天的情况  
  6. jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(""));  
  7. jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(""))+1);  
  8. jin3.text=arrayResult[5];  
  9. jin4.text=arrayResult[7];  
  10.  
  11. //显示明天的情况  
  12. ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(""));  
  13. ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(""))+1);  
  14. ming3.text=arrayResult[12];  
  15. ming4.text=arrayResult[14];  
  16.  
  17. //显示后天的情况  
  18. hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(""));  
  19. hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(""))+1);  
  20. hou3.text=arrayResult[17];  
  21. hou4.text=arrayResult[19];  
  22. }  
  23.  

在使用Web服务返回的结果时,发现其结果保存在字符数组中的,在WSDL中是ArrayOfString,而Flex没有这种格式,在试过String,Array类型后,发现ArrayCollection类可以使用。然后就是显示结果,可根据WSDL说明来挑选信息。

4.使用按钮调用Webservice组件,发送Web服务信息。

即调用ws.getWeatherbyCityName.send()方法。

◆编译发布swf文件

求助:在使用swf文件的时候有这样的问题,不晓得怎么把flex导出的swf嵌入Html中。普通的嵌入,不能实现调用Web服务的功能,使用项目生成的文件包中的Html文件倒是可以,但是如果把文件包复制出来,放到另外的地方,又无法使用Web服务了。那位高手能够给予帮助,在下将不胜感激。

完整代码如下:

  1. <?xmlversionxmlversion="1.0"encoding="gb2312"?> 
  2. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"width="330"  
  3. height="155"layout="absolute"fontSize="12"viewSourceURL="srcview/index.html"> 
  4. <mx:Script> 
  5. <![CDATA[  
  6. importmx.controls.Alert;  
  7. importmx.collections.ArrayCollection;  
  8. publicvararrayResult:ArrayCollection;//保存接收到的结果  
  9. publicfunctionresultOK():void{//显示接受的结果  
  10. arrayResult=newArrayCollection();  
  11. arrayResult=ws.getWeatherbyCityName.lastResult;  
  12.  
  13. //显示今天的情况  
  14. jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(""));  
  15. jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(""))+1);  
  16. jin3.text=arrayResult[5];  
  17. jin4.text=arrayResult[7];  
  18.  
  19. //显示明天的情况  
  20. ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(""));  
  21. ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(""))+1);  
  22. ming3.text=arrayResult[12];  
  23. ming4.text=arrayResult[14];  
  24.  
  25. //显示后天的情况  
  26. hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(""));  
  27. hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(""))+1);  
  28. hou3.text=arrayResult[17];  
  29. hou4.text=arrayResult[19];  
  30. }  
  31.  
  32. //显示说明  
  33. publicfunctionshowMessage():void{  
  34. varalert:Alert=Alert.show("请输入城市中文名称(国外城市可用英文)。web服务来源于http://www.webxml.com.cn,数据来源于中国气象局"+  
  35. ",包括340多个中国"+  
  36. "主要城市和60多个国外主要城市三日内的天气情况。作者EMAIL:anhulife@gmail.com","说明",Alert.YES);  
  37. }  
  38.  
  39. //处理当输入栏获得焦点时,输入栏清空  
  40. publicfunctiongetfocus():void{  
  41. city.text="";  
  42. }  
  43. ]]> 
  44. </mx:Script> 
  45.  
  46.  
  47. <mx:WebServiceidmx:WebServiceid="ws"wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"  
  48. useProxy="false"showBusyCursor="true"> 
  49. <mx:operationnamemx:operationname="getWeatherbyCityName"result="resultOK()"> 
  50. <mx:request> 
  51. <theCityName> 
  52. {city.text.toString()}  
  53. </theCityName> 
  54. </mx:request> 
  55. </mx:operation> 
  56. </mx:WebService> 
  57.  
  58. <mx:TextInputidmx:TextInputid="city"text="请输入城市名,支持国内外主要城市"  
  59. width="200"x="10"y="10"focusIn="getfocus()"fontSize="12"color="#909697"/> 
  60.  
  61. <mx:Buttonidmx:Buttonid="check"x="230"y="10"label="查询"click="ws.getWeatherbyCityName.send()"/> 
  62.  
  63. <!--显示结果的Label--> 
  64. <mx:Labelxmx:Labelx="10"y="42"text=""width="90"id="jin1"/> 
  65. <mx:Labelxmx:Labelx="10"y="70"text=""width="90"id="jin2"/> 
  66. <mx:Labelxmx:Labelx="10"y="98"text=""width="90"id="jin3"/> 
  67. <mx:Labelxmx:Labelx="10"y="126"text=""width="90"id="jin4"/> 
  68. <mx:Labelxmx:Labelx="120"y="42"text=""width="90"id="ming1"/> 
  69. <mx:Labelxmx:Labelx="120"y="70"text=""width="90"id="ming2"/> 
  70. <mx:Labelxmx:Labelx="120"y="98"text=""width="90"id="ming3"/> 
  71. <mx:Labelxmx:Labelx="120"y="126"text=""width="90"id="ming4"/> 
  72. <mx:Labelxmx:Labelx="230"y="41"text=""width="90"id="hou1"/> 
  73. <mx:Labelxmx:Labelx="230"y="69"text=""width="90"id="hou2"/> 
  74. <mx:Labelxmx:Labelx="230"y="97"text=""width="90"id="hou3"/> 
  75. <mx:Labelxmx:Labelx="230"y="125"text=""width="90"id="hou4"/> 
  76.  
  77. <!--显示说明的Label--> 
  78. <mx:Labelxmx:Labelx="288"y="12"text="说明"width="32"textDecoration="underline"color="#FAFBFB"click="showMessage()"/> 
  79. </mx:Application> 
  80.  

 想学习Webservice,所以先研究一下Flex怎么调用WebService.看了这篇文章感觉不错,先测试一下。

【编辑推荐】

  1. 学习笔记 用Flash和Flex创建WebService客户端
  2. 深入剖析Flex字体样式定义方法
  3. 全面认识Flex应用程序的六大元素
  4. 揭开Flex正则表达式的神秘面纱
  5. Flex数据绑定及其使用频繁的几种情况 

 

责任编辑:佚名 来源: 163.com
相关推荐

2016-03-14 10:29:38

天气预报各类工具源码

2013-03-26 13:20:27

Android天气预报

2009-12-02 15:45:04

PHP抓取天气预报

2017-08-01 10:10:32

人工智能智能天气预报

2009-07-07 09:25:08

Linux开发FOSS开发项目

2020-01-16 15:13:40

AI预测天气预报

2022-02-21 11:02:54

5G通信网络天气预报

2018-01-29 11:25:37

LinuxASCII 字符天气预报

2020-02-11 20:00:29

开源开源工具天气预报

2012-07-16 13:36:54

交换机数据中心核心交换机气象卫星

2013-04-10 17:59:50

微信公众平台接口开发

2015-10-19 17:16:10

天气预报命令行Linux

2009-08-26 16:59:44

2009-04-17 17:11:18

ASP.NET新浪天气

2022-02-21 15:07:48

气象学人工智能AI

2013-09-09 10:52:10

2019-10-25 19:42:41

华为

2012-06-18 15:40:32

jQuery

2012-03-13 16:45:09

超级计算机沃森Deep Thunde

2023-10-27 16:15:35

鸿蒙天气服务功能
点赞
收藏

51CTO技术栈公众号