Flex调用Webservice实现天气预报

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

成都创新互联是一家专注于成都网站设计、成都做网站与策划设计,西林网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:西林等地区。西林做网站价格咨询:18980820575

Flex调用Webservice实现天气预报

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

1.构建界面

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

2.添加Webservice组件

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

 
 
 
  1. WebServices/WeatherWebService.asmx?wsdl"  
  2. useProxy="false"showBusyCursor="true"> 
  3. result="resultOK()"> 
  4.  
  5.  
  6. {city.text.toString()}  
  7.  
  8.  
  9.  
  10.  

注意: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.  
  2. height="155"layout="absolute"fontSize="12"viewSourceURL="srcview/index.html"> 
  3.  
  4. importmx.controls.Alert;  
  5. importmx.collections.ArrayCollection;  
  6. publicvararrayResult:ArrayCollection;//保存接收到的结果  
  7. publicfunctionresultOK():void{//显示接受的结果  
  8. arrayResult=newArrayCollection();  
  9. arrayResult=ws.getWeatherbyCityName.lastResult;  
  10.  
  11. //显示今天的情况  
  12. jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(""));  
  13. jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(""))+1);  
  14. jin3.text=arrayResult[5];  
  15. jin4.text=arrayResult[7];  
  16.  
  17. //显示明天的情况  
  18. ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(""));  
  19. ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(""))+1);  
  20. ming3.text=arrayResult[12];  
  21. ming4.text=arrayResult[14];  
  22.  
  23. //显示后天的情况  
  24. hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(""));  
  25. hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(""))+1);  
  26. hou3.text=arrayResult[17];  
  27. hou4.text=arrayResult[19];  
  28. }  
  29.  
  30. //显示说明  
  31. publicfunctionshowMessage():void{  
  32. varalert:Alert=Alert.show("请输入城市中文名称(国外城市可用英文)。web服务来源于http://www.webxml.com.cn,数据来源于中国气象局"+  
  33. ",包括340多个中国"+  
  34. "主要城市和60多个国外主要城市三日内的天气情况。作者EMAIL:anhulife@gmail.com","说明",Alert.YES);  
  35. }  
  36.  
  37. //处理当输入栏获得焦点时,输入栏清空  
  38. publicfunctiongetfocus():void{  
  39. city.text="";  
  40. }  
  41. ]]> 
  42.  
  43.  
  44.  
  45. useProxy="false"showBusyCursor="true"> 
  46.  
  47.  
  48.  
  49. {city.text.toString()}  
  50.  
  51.  
  52.  
  53.  
  54.  
  55. width="200"x="10"y="10"focusIn="getfocus()"fontSize="12"color="#909697"/> 
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  

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

网页标题:Flex调用Webservice实现天气预报
标题URL:http://www.mswzjz.com/qtweb/news18/160218.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联