天气预报是非常有用的服务,如果能在网站上集成天气预报,能极大地方便用户查询。
寻遍了国内所有的气象站点,没找见提供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预报。
分享到:
相关推荐
这是一个VB.NET作为后台语言的ASP.NET程序,集成了AJAX功能,实现yahoo的天气预报的RSS的调用,最终通过页面展示当前的天气情况。
雅虎天气预报的获取,雅虎天气接口程序的访问例子。
weather_yahoo yahoo天气预报代码 weather_yahoo yahoo天气预报代码
yahoo开发的天气预报程序,能根据城市和地址来预报天气
java获取yahoo天气预报代码
XML解析,基于yahoo开发接口实现的天气预报,可以自定义城市
软件专为用户提供了未来五天的天气预报及每天的详细天气情况,还按照用户习惯精选了各种精美背景图片的清新画面体验~常雅虎天气提供了未来五天的天气预报,以及每天的详细天气。和大多数天气软件不同的是,根据不同...
本天气预报采用雅虎天气的接口,可以获取真实的天气情况,可以实现选择城市等功能,代码比较复杂,符合MVC模式开发,结构比较清晰,适合准备开发天气预报的朋友使用。有什么问题可以联系我。
最新的通过雅虎API 获取雅虎天气预报API,通过JSON格式解析,已充分测试并能有效获取雅虎数据
雅虎天气预报WIDGET代码,可搜索世界各大城市,用于android 手机,整体可以运行,还有问题,高手们多指教指教啊。
这是一个利用雅虎天气的API做的查看天气预报的程序
用雅虎的天气api实现的天气预报,三级联动效果的实例,非常适合入门者学习。
获取雅虎天气,隔个省,非常方面,特别好,我测试了好多此,相当不错
功能: 可以获取Yahoo!每日更新的天气预报,图文并茂, 可以很方便地插入到现有的ASP页面中 要求: 支持ASP,Access和MSXML2.XMLHTTP组件的服务器/虚拟主机 (大多数服务器支持MSXML2.XMLHTTP组件)
本文介绍一个利用Jquery和雅虎的YQL服务实现天气预报功能,需要的朋友可以参考下
这是之前做日本项目时整理的雅虎天气预报api的日本地区编码,该项目已在运行,请放心使用
注意仅适用于获得yahoo上的天气预报 GetWeather.aspx ———————————– 代码如下:<%@ Page language=”c#” Codebehind=”GetWeather.aspx.cs” AutoEventWireup=”false” I
雅虎天气预报城市代码整理分享,可以直接倒到自己的工程里直接读出使用,给有需要的人。
全套天气预报图标 此图标为PNG图标 有文档详细解释图标含义 希望对大家有帮助
此技术文档基于雅虎天际预报接口开发的一款天气预报,该文档内涵源码及技术文档