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 代码
- <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()"/>
这就是一个简单的webservice定义,然后我们可以加上operation声明,或者使用编程方式调用。以本例来讲,可以直接使用编程方式调用,就跟普通的方法调用形式一样:
xml 代码
- weatherWS.GetCitiesByCountry("China");
很简单吧,都不需要关注底层技术。
声明方式也是可以的:
xml 代码
- <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()">
- <mx:operation name="GetCitiesByCountry"/>
- <!---->mx:WebService>
mx:operation其实就是mx.rpc.soap.mxml.Operation,里面有一个public funciton -- send(...args),代表方法调用,于是:
xml 代码
- weatherWS.GetCitiesByCountry.send("china")
这样也是可以的。
除此以外WebService提供两个event:
分别代表调用出错和成功事件,两者都没有提供用户默认实现,需要用编程方式实现事件处理。特别是用ResultEvent可以获得调用结果(就是本例开始获得的xml结果,剩下的处理就是分析xml结构啦)。
下面是模块代码:
xml 代码
- xml version="1.0" encoding="utf-8"?>
- <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="174" height="200" title="Weather" creationComplete="init()">
-
- <mx:Script>
- <!---->
- private var citysArr:Array = new Array();
-
- private function init():void
- {
- citysArr.push({label:"choose..."});
- cityCombo.selectedIndex = 0;
- weatherWS.addEventListener(ResultEvent.RESULT, wsResult);
- weatherWS.GetCitiesByCountry("China");
-
- this.title = "Weather(connecting...)";
- }
-
- private function wsResult(eve:ResultEvent):void
- {
- this.title = "Weather";
- weatherWS.removeEventListener(ResultEvent.RESULT,wsResult);
- XML.ignoreWhitespace = true;
- XML.ignoreComments = true;
- XML.ignoreProcessingInstructions = true;
- var xml:XML = new XML(eve.result.toString());
-
- var cityNum:int = xml.Table.length();
- for(var i:int=0 ; i
- {
- citysArr.push({label:xml.Table[i].City});
- }
-
- cityCombo.addEventListener(ListEvent.CHANGE, cityListChooseHandler);
- weatherWS.addEventListener(ResultEvent.RESULT, onCityInfo);
- }
-
-
- private function cityListChooseHandler(eve:ListEvent):void
- {
- var cityName:String = cityCombo.selectedLabel;
- cityInfo.htmlText = "";
- weatherWS.GetWeather(cityName,"china");
- }
-
- private function onCityInfo(eve:ResultEvent):void
- {
- var xml:XML = new XML(eve.result.toString());
- var infoNum:int = xml.children().length();
- for(var i:int=0 ; i
- {
- var nodestr:String = xml.children()[i].toXMLString();
- cityInfo.htmlText += "
- }
- }
-
- private function wsFaultPopAlert():void
- {
- Alert.show("WebService access failed");
- }
- ]]>
- <!---->mx:Script>
-
- <mx:WebService id="weatherWS" wsdl="http://www.webservicex.net/globalweather.asmx?WSDL" showBusyCursor="true" fault="wsFaultPopAlert()"/>
-
- <mx:Label x="0" y="0" text="City"/>
- <mx:ComboBox id="cityCombo" x="34" y="-2" width="120" dataProvider="{citysArr}" labelField="label"/>
- <mx:TextArea id="cityInfo" x="0" y="26" width="100%" height="100%" selectable="false"/>
- <mx:ControlBar>
- <!---->mx:ControlBar>
- <!---->mx:Panel>
分享到:
相关推荐
Flex使用ActionScript,这是一种面向对象的编程语言,它是Flash Player和Adobe AIR应用程序的基础。Web Service通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)架构,提供...
在本项目“Flex调用Webservice实现天气预报”中,我们将探讨如何使用Flex作为客户端,通过调用Webservice接口来获取并显示实时的天气信息。这涉及到以下几个关键技术点: 1. **Flex中的HTTPService组件**:Flex提供...
在这个例子中,我们使用的是一个提供天气预报信息的WebService,通过发送请求并接收响应来获取所需数据。 要调用WebService,C#提供了System.Web.Services命名空间中的SoapHttpClientProtocol类,它是Web服务客户端...
【WebService获得天气预报demo Delphi7】是一个基于Delphi7开发的应用程序,它演示了如何通过使用WebService接口来获取特定城市的天气预报信息。这个项目主要关注的是如何在Delphi7中实现对网络服务的调用,以及如何...
总的来说,这个“WebService调用天气预报小例子”是一个很好的实践机会,可以帮助开发者掌握WebService的基本概念和使用方法,同时也能理解如何与其他系统集成以获取实时数据。通过深入研究和扩展这个例子,开发者...
在本例中,“webservice天气预报例子cxf实例”指的是使用Apache CXF框架实现的一个天气预报相关的Web服务示例。 Apache CXF是一个开源框架,它为开发和部署Web服务提供了全面的支持。CXF允许开发者通过Java编程模型...
2. **实现服务端**:根据WSDL创建服务端代码,这可以使用各种编程语言完成,如Java(JAX-WS)、.NET(WCF)或Python(suds)。服务端会处理客户端的请求,查询天气数据库或第三方API,然后返回相应的天气信息。 3. ...
【标题】"天气预报WebService实例"是一个基于网络服务的项目,旨在提供实时的天气信息查询功能。WebService是一种通过互联网交换结构化信息的标准,它允许不同的应用程序之间进行交互,无论它们运行在何种操作系统或...
可以查看某城市的天气预报,查看支持天气预报的省份,可以查看今天、明天、后天的天气。...(WebService天气预报、天气预报、C#的WebService、WebService、远程调用WebService、远程调用天气预报。)
DELPHI 通过WEBSERVICE获取天气预报,可获取全球,全国各省市天气预报详情
【WebService天气预报查询的实现实例】是一种利用网络服务接口获取和展示天气预报信息的技术实践。在本实例中,开发者采用C#编程语言,利用WebService技术来构建一个天气查询系统。下面将详细介绍这个实例涉及的关键...
在本例中,我们关注的是使用Web Service实现天气预报功能,这涉及到SOAP(Simple Object Access Protocol)协议的运用。 SOAP是用于交换结构化信息的协议,它基于XML(Extensible Markup Language)格式,使得数据...
总之,"webservice调用天气预报"涉及到使用IDEA创建的Web服务客户端,通过SOAP协议与提供天气预报的Web服务进行交互,获取并解析返回的XML数据,以展示不同城市的天气状况。这个过程中,理解Web服务的基本原理、使用...
总结来说,C#通过WebService查询天气预报涉及的主要知识点有:了解WebService的基本概念和工作原理,使用SOAP进行数据交换,创建并使用`SoapHttpClientProtocol`的子类,处理和解析返回的数据。这些知识对于任何想要...
根据很多天气预报调用方法,本人自己写了个demo,根据地图定位,获取当前城市,调用免费webservice接口,解析返回数据,展示3天内天气信息。本demo设置时间比较获取,不是频繁请求服务的(频繁请求带来接口查询数据...
在本实例中,我们将使用Ksoap2来与天气预报的Webservice进行交互。首先,需要在项目中引入ksoap2-android库,然后使用其提供的类和方法来构造SOAP请求并解析响应。 4. **SOAP请求构造**:SOAP消息由Header和Body两...
在这个示例中,我们关注的是如何使用WebService调用天气预报服务。 首先,我们需要了解`wsimport`工具。`wsimport`是Java SDK的一部分,用于从WSDL(Web Service Description Language)文件生成Java客户端存根类。...
2. **调用天气预报服务** - 调用Weather WebService的API,传递城市名或地理坐标作为参数。 - 接收返回的数据,通常是XML或JSON格式,然后解析这些数据以获取天气信息,如温度、湿度、风速等。 3. **免费的...
标题中的“基于.NET和WebService的天气预报”指的是一项利用微软的.NET框架和WebService技术来获取及展示天气预报信息的应用示例。这个项目是用C#编程语言编写的,并且基于ASP.NET平台,这意味着它是构建在Web上的,...