`
noahgenius
  • 浏览: 140003 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

flex2使用webservice完成天气预报

阅读更多
http://www.webservicex.net/globalweather.asmx是一个公共免费的webservice接口,提供全球主要城市的当天天气情况(包括中国的主要城市),firefox下打开链接,用GetCitiesByCountry方法和china参数试运行一下,可以看到返回一个xml结构表示支持的城市名称(用这些城市名称作为参数使用GetWeather方法就能得到天气信息了)。下面我们就使用flex2丰富的用户体验来实现简单的天气查询系统。
IDE:Flex builder 3

打开flex 2 language reference,可以看到web service 应用相关的namespace有两个:
  • mx.rpc.soap
  • mx.rpc.soap.mxml
从名称上来看,后者是前者的component封装(实际上就是如此),说白了mx.rpc.soap.mxml下的两个class可以使用mxml tag的声明方式来定义一个web service,一般情况下,这样的声明方式可读性还是比较好的,代码量比较少,还有一些UI上扩展的功能可以利用(比如WebService class的ShowBusyCursor方法)。声明方式很简单
xml 代码
 
  1. <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()"/>  
这就是一个简单的webservice定义,然后我们可以加上operation声明,或者使用编程方式调用。以本例来讲,可以直接使用编程方式调用,就跟普通的方法调用形式一样:
xml 代码
  1. weatherWS.GetCitiesByCountry("China");  
很简单吧,都不需要关注底层技术。

声明方式也是可以的:
xml 代码
 
  1. <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()">  
  2.     <mx:operation name="GetCitiesByCountry"/>  
  3. <!---->mx:WebService>  
mx:operation其实就是mx.rpc.soap.mxml.Operation,里面有一个public funciton -- send(...args),代表方法调用,于是:
xml 代码
  1. weatherWS.GetCitiesByCountry.send("china")  
这样也是可以的。

除此以外WebService提供两个event:
分别代表调用出错和成功事件,两者都没有提供用户默认实现,需要用编程方式实现事件处理。特别是用ResultEvent可以获得调用结果(就是本例开始获得的xml结果,剩下的处理就是分析xml结构啦)。

下面是模块代码:
xml 代码
 
  1. xml version="1.0" encoding="utf-8"?>  
  2. <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="174" height="200" title="Weather" creationComplete="init()">  
  3.       
  4.     <mx:Script>  
  5.         <!----> 
  6.             private var citysArr:Array = new Array(); 
  7.              
  8.             private function init():void 
  9.             { 
  10.                 citysArr.push({label:"choose..."}); 
  11.                 cityCombo.selectedIndex = 0; 
  12.                 weatherWS.addEventListener(ResultEvent.RESULT, wsResult); 
  13.                 weatherWS.GetCitiesByCountry("China"); 
  14.                  
  15.                 this.title = "Weather(connecting...)"; 
  16.             } 
  17.              
  18.             private function wsResult(eve:ResultEvent):void 
  19.             { 
  20.                 this.title = "Weather"; 
  21.                 weatherWS.removeEventListener(ResultEvent.RESULT,wsResult); 
  22.                 XML.ignoreWhitespace = true; 
  23.                 XML.ignoreComments = true; 
  24.                 XML.ignoreProcessingInstructions = true; 
  25.                 var xml:XML = new XML(eve.result.toString()); 
  26.                  
  27.                 var cityNum:int = xml.Table.length(); 
  28.                 for(var i:int=0 ; i 
  29.                 { 
  30.                     citysArr.push({label:xml.Table[i].City}); 
  31.                 } 
  32.                  
  33.                 cityCombo.addEventListener(ListEvent.CHANGE, cityListChooseHandler); 
  34.                 weatherWS.addEventListener(ResultEvent.RESULT, onCityInfo); 
  35.             } 
  36.              
  37.              
  38.             private function cityListChooseHandler(eve:ListEvent):void 
  39.             { 
  40.                 var cityName:String = cityCombo.selectedLabel; 
  41.                 cityInfo.htmlText = ""; 
  42.                 weatherWS.GetWeather(cityName,"china"); 
  43.             } 
  44.              
  45.             private function onCityInfo(eve:ResultEvent):void 
  46.             { 
  47.                 var xml:XML = new XML(eve.result.toString()); 
  48.                 var infoNum:int = xml.children().length(); 
  49.                 for(var i:int=0 ; i 
  50.                 { 
  51.                     var nodestr:String = xml.children()[i].toXMLString(); 
  52.                     cityInfo.htmlText += " 
  53.                 } 
  54.             } 
  55.              
  56.             private function wsFaultPopAlert():void 
  57.             { 
  58.                 Alert.show("WebService access failed"); 
  59.             } 
  60.         ]]>  
  61.     <!---->mx:Script>  
  62.       
  63.     <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()"/>  
  64.       
  65.     <mx:Label x="0" y="0" text="City"/>  
  66.     <mx:ComboBox id="cityCombo" x="34" y="-2" width="120" dataProvider="{citysArr}" labelField="label"/>  
  67.     <mx:TextArea id="cityInfo" x="0" y="26" width="100%" height="100%" selectable="false"/>  
  68.     <mx:ControlBar>  
  69.     <!---->mx:ControlBar>  
  70. <!---->mx:Panel>  
分享到:
评论
2 楼 towne 2009-06-26  
bs 代码都贴补全
1 楼 javaboy2008 2008-04-30  
他奶奶的...你怎么能这个样...中间还缺少代码啊。·!!!

不专业。。

相关推荐

    使用Flex调用webService开发一个天气预报服务

    Flex使用ActionScript,这是一种面向对象的编程语言,它是Flash Player和Adobe AIR应用程序的基础。Web Service通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)架构,提供...

    Flex调用Webservice实现天气预报

    在本项目“Flex调用Webservice实现天气预报”中,我们将探讨如何使用Flex作为客户端,通过调用Webservice接口来获取并显示实时的天气信息。这涉及到以下几个关键技术点: 1. **Flex中的HTTPService组件**:Flex提供...

    C#调用WebService实现天气预报

    在这个例子中,我们使用的是一个提供天气预报信息的WebService,通过发送请求并接收响应来获取所需数据。 要调用WebService,C#提供了System.Web.Services命名空间中的SoapHttpClientProtocol类,它是Web服务客户端...

    WebService获得天气预报demo Delphi7

    【WebService获得天气预报demo Delphi7】是一个基于Delphi7开发的应用程序,它演示了如何通过使用WebService接口来获取特定城市的天气预报信息。这个项目主要关注的是如何在Delphi7中实现对网络服务的调用,以及如何...

    WebService调用天气预报小例子

    总的来说,这个“WebService调用天气预报小例子”是一个很好的实践机会,可以帮助开发者掌握WebService的基本概念和使用方法,同时也能理解如何与其他系统集成以获取实时数据。通过深入研究和扩展这个例子,开发者...

    webservice天气预报例子cxf实例

    在本例中,“webservice天气预报例子cxf实例”指的是使用Apache CXF框架实现的一个天气预报相关的Web服务示例。 Apache CXF是一个开源框架,它为开发和部署Web服务提供了全面的支持。CXF允许开发者通过Java编程模型...

    WebService实现天气预报

    2. **实现服务端**:根据WSDL创建服务端代码,这可以使用各种编程语言完成,如Java(JAX-WS)、.NET(WCF)或Python(suds)。服务端会处理客户端的请求,查询天气数据库或第三方API,然后返回相应的天气信息。 3. ...

    天气预报WebService实例

    【标题】"天气预报WebService实例"是一个基于网络服务的项目,旨在提供实时的天气信息查询功能。WebService是一种通过互联网交换结构化信息的标准,它允许不同的应用程序之间进行交互,无论它们运行在何种操作系统或...

    用WebService实现的天气预报

    可以查看某城市的天气预报,查看支持天气预报的省份,可以查看今天、明天、后天的天气。...(WebService天气预报、天气预报、C#的WebService、WebService、远程调用WebService、远程调用天气预报。)

    DELPHI 通过WEBSERVICE获取天气预报

    DELPHI 通过WEBSERVICE获取天气预报,可获取全球,全国各省市天气预报详情

    WebService天气预报查询的实现实例

    【WebService天气预报查询的实现实例】是一种利用网络服务接口获取和展示天气预报信息的技术实践。在本实例中,开发者采用C#编程语言,利用WebService技术来构建一个天气查询系统。下面将详细介绍这个实例涉及的关键...

    webservice 实现天气预报功能

    在本例中,我们关注的是使用Web Service实现天气预报功能,这涉及到SOAP(Simple Object Access Protocol)协议的运用。 SOAP是用于交换结构化信息的协议,它基于XML(Extensible Markup Language)格式,使得数据...

    webservice调用天气预报

    总之,"webservice调用天气预报"涉及到使用IDEA创建的Web服务客户端,通过SOAP协议与提供天气预报的Web服务进行交互,获取并解析返回的XML数据,以展示不同城市的天气状况。这个过程中,理解Web服务的基本原理、使用...

    C# 使用WebService查询天气预报

    总结来说,C#通过WebService查询天气预报涉及的主要知识点有:了解WebService的基本概念和工作原理,使用SOAP进行数据交换,创建并使用`SoapHttpClientProtocol`的子类,处理和解析返回的数据。这些知识对于任何想要...

    webservice调用天气预报demo

    根据很多天气预报调用方法,本人自己写了个demo,根据地图定位,获取当前城市,调用免费webservice接口,解析返回数据,展示3天内天气信息。本demo设置时间比较获取,不是频繁请求服务的(频繁请求带来接口查询数据...

    Android之Webservice详解与调用天气预报Webservice完整实例

    在本实例中,我们将使用Ksoap2来与天气预报的Webservice进行交互。首先,需要在项目中引入ksoap2-android库,然后使用其提供的类和方法来构造SOAP请求并解析响应。 4. **SOAP请求构造**:SOAP消息由Header和Body两...

    WebService 的调用天气预报(附源码Demo)

    在这个示例中,我们关注的是如何使用WebService调用天气预报服务。 首先,我们需要了解`wsimport`工具。`wsimport`是Java SDK的一部分,用于从WSDL(Web Service Description Language)文件生成Java客户端存根类。...

    在asp.ne中t使用WebService获取天气预报信息的例子

    2. **调用天气预报服务** - 调用Weather WebService的API,传递城市名或地理坐标作为参数。 - 接收返回的数据,通常是XML或JSON格式,然后解析这些数据以获取天气信息,如温度、湿度、风速等。 3. **免费的...

    基于.NET和WebService的天气预报

    标题中的“基于.NET和WebService的天气预报”指的是一项利用微软的.NET框架和WebService技术来获取及展示天气预报信息的应用示例。这个项目是用C#编程语言编写的,并且基于ASP.NET平台,这意味着它是构建在Web上的,...

Global site tag (gtag.js) - Google Analytics