天气预报是非常有用的服务,如果能在网站上集成天气预报,能极大地方便用户查询。
寻遍了国内所有的气象站点,没找见提供Web服务的,太小气了,只能去国外找。NOAA(www.weather.gov)提供一个Web服务,但是死活连不上服务器,估计被屏蔽了,其他提供全球天气预报的有www.weather.com和yahoo,
不过weather.com的服务太麻烦,还需要注册,相比之下,yahoo的天气服务既简单又快速,只需一个http请求,然后解析返回的XML即可获得天气预报。
以北京为例,在weather.yahoo.com查找北京的城市代码为CHXX0008,对应的URL为:
http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX0008
然后,通过SAX解析返回的XML:
URL url = new URL("http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX0008");
InputStream input = url.openStream();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
SAXParser parser = factory.newSAXParser();
parser.parse(input, new YahooHandler());
自己定义一个YahooHandler来响应SAX事件:
/**
* For more information, please visit: http://www.crackj2ee.com
* Author: Liao Xuefeng
*/
public class YahooHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
if("yweather:condition".equals(qName)) {
String s_date = attributes.getValue(3);
try {
Date publish = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm a z",
Locale.US).parse(s_date);
//System.out.println("Publish: " + publish.toString());
}
catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
}
else if("yweather:forecast".equals(qName)) {
String s_date = attributes.getValue(1);
Date date = null;
try {
date = new SimpleDateFormat("dd MMM yyyy", Locale.US).parse(s_date);
}
catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
int low = Integer.parseInt(attributes.getValue(2));
int high = Integer.parseInt(attributes.getValue(3));
String text = attributes.getValue(4);
int code = Integer.parseInt(attributes.getValue(5));
System.out.println("Weather: "+ text + ", low=" + low + ", high=" + high);
}
super.startElement(uri, localName, qName, attributes);
}
}
运行结果:
Weather: Partly Cloudy, low=7, high=16
Weather: Sunny, low=7, high=20
Yahoo会返回当天和第二天的Weather预报。
分享到:
相关推荐
标题提到的“Yahoo的天气RSS实现天气预报功能”涉及到RSS(Really Simple Syndication)技术。RSS是一种内容发布格式,允许用户订阅和获取网站更新,如新闻、博客或天气预报等。Yahoo提供了一个公开的天气RSS feed,...
本文将详细介绍如何使用Java语言实现一个简易的天气预报客户端,该客户端能够通过Yahoo提供的天气预报XML接口获取并显示相关信息。 #### 二、Yahoo天气预报XML接口简介 Yahoo提供了一个免费的天气预报信息服务,...
标签"weather_yahoo"直接指出了主题,"天气"和"天气预报"进一步明确了我们要获取的数据类型,而"雅虎天气"和"雅虎天气获取"则强调了使用的具体服务。这两个压缩文件"Project_exe.zip"和"Project_src.zip"可能包含了...
【标题】"Yahoo天气预报_csharp 天气预报_weather_天气_天气预报代码"涉及到的知识点主要集中在使用C#编程语言来实现一个基于Yahoo Weather API的天气查询应用。这个项目可能是一个小型的实用程序,允许用户获取全球...
在这个示例中,开发者使用C#语言编写了一个简单的网页,可以从Yahoo天气服务获取特定城市的天气信息。以下是实现这个功能的关键知识点: 1. **HTTP请求**: - 使用`System.Net.WebClient`类或`System.Net....
下面将详细介绍Yahoo天气预报API的主要功能、使用方法以及相关的编程知识。 1. **API接口**: Yahoo天气预报API通常提供一个基础URL,如`https://query.yahooapis.com/v1/public/yql`,开发者可以通过向这个URL...
Yahoo Weather API提供了全球各地的天气信息,包括温度、湿度、风速、天气状况等,开发者可以通过调用这个API,结合C#的编程能力,实现天气预报的显示。 总的来说,这个项目是一个综合性的C#开发练习,涵盖了网络...
【天气预报程序】是一个利用雅虎天气API开发的应用,它能够帮助用户获取并查看最新的天气预报信息。在本文中,我们将深入探讨这个程序的核心技术、API的使用以及与VC(Visual C++)的结合。 首先,让我们理解什么是...
雅虎天气预报WIDGET是一款专为Android手机设计的桌面插件,它允许用户方便地查看全球各大城市的实时天气信息。这个WIDGET的核心功能是搜索和显示天气预报,为用户提供便捷的气象查询服务。通过集成雅虎的天气API,该...
在实现Yahoo天气预报时,开发者需要掌握如何构造请求URL,添加必要的参数(如城市代码),以及如何处理返回的数据。 再者,**HTTP请求和响应**是互联网通信的基础。在这个项目中,开发者可能使用了诸如Python的`...
通过以上步骤,你可以在ASP.NET应用程序中实现一个功能完善的天气预报模块。这不仅展示了如何与WebService交互,还涵盖了数据解析、用户界面设计和性能优化等多个方面,为开发者提供了一个全面的实践案例。
在`WeatherTest`这个文件中,可能包含了上述代码的实现,用于测试和展示如何在Java中获取并解析Yahoo天气预报。这样的代码对学习网络编程、XML解析以及API调用等技能非常有帮助,同时也是构建实用应用程序的一个基础...
软件专为用户提供了未来五天的天气预报及每天的详细天气情况,还按照用户习惯精选了各种精美背景图片的清新画面体验~常雅虎天气提供了未来五天的天气预报,以及每天的详细天气。和大多数天气软件不同的是,根据不同...
【Android天气预报实例】是一个基于Java编程语言和Android操作系统开发的应用程序示例,它利用了雅虎提供的天气API来获取实时的气象数据。这个实例展示了如何在Android平台上构建一个功能完善的天气应用,其中包括...
此外,城市代码的使用通常需要与编程语言的网络请求功能相结合,例如在Python中使用requests库、在JavaScript中使用XMLHttpRequest或fetch等方法,向雅虎天气预报的API发送网络请求,并根据返回的数据格式(通常是...
在本技术文档中,介绍了如何利用雅虎天气预报接口开发JAVA版的天气预报程序。文档详细阐述了整个程序的开发过程、程序界面设计以及如何解析天气预报信息。 首先,Yahoo天气预报服务为开发者提供了丰富的天气信息...
雅虎天气API是一个流行的API,允许开发者获取关于全球各地天气的实时信息。本文将深入探讨如何利用雅虎天气API来获取数据,并通过JSON格式解析这些数据。 首先,雅虎天气API提供了关于天气的各种信息,包括温度、...
根据给定的信息,本文将详细解释ASP.NET中的实时天气及24小时天气预报功能的实现原理,以及如何通过修改URL来获取不同城市的天气情况。 ### 一、ASP.NET概述 ASP.NET是Microsoft开发的一种用于创建动态网页的应用...
获取雅虎天气,隔个省,非常方面,特别好,我测试了好多此,相当不错
【天气预报实例】是一个利用雅虎天气API创建的项目,主要展示了如何通过AJAX、jQuery和JSONP技术实现一个三级联动的天气预报功能。这个实例对于初学者来说是一个很好的学习资源,可以帮助他们理解和掌握相关技术。 ...