天气预报是非常有用的服务,如果能在网站上集成天气预报,能极大地方便用户查询。
寻遍了国内所有的气象站点,没找见提供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的天气RSS实现天气预报功能”涉及到RSS(Really Simple Syndication)技术。RSS是一种内容发布格式,允许用户订阅和获取网站更新,如新闻、博客或天气预报等。Yahoo提供了一个公开的天气RSS feed,...
本文将详细介绍如何使用Java语言实现一个简易的天气预报客户端,该客户端能够通过Yahoo提供的天气预报XML接口获取并显示相关信息。 #### 二、Yahoo天气预报XML接口简介 Yahoo提供了一个免费的天气预报信息服务,...
【标题】"Yahoo天气预报_csharp 天气预报_weather_天气_天气预报代码"涉及到的知识点主要集中在使用C#编程语言来实现一个基于Yahoo Weather API的天气查询应用。这个项目可能是一个小型的实用程序,允许用户获取全球...
在这个示例中,开发者使用C#语言编写了一个简单的网页,可以从Yahoo天气服务获取特定城市的天气信息。以下是实现这个功能的关键知识点: 1. **HTTP请求**: - 使用`System.Net.WebClient`类或`System.Net....
Yahoo Weather API提供了全球各地的天气信息,包括温度、湿度、风速、天气状况等,开发者可以通过调用这个API,结合C#的编程能力,实现天气预报的显示。 总的来说,这个项目是一个综合性的C#开发练习,涵盖了网络...
在`WeatherTest`这个文件中,可能包含了上述代码的实现,用于测试和展示如何在Java中获取并解析Yahoo天气预报。这样的代码对学习网络编程、XML解析以及API调用等技能非常有帮助,同时也是构建实用应用程序的一个基础...
下面将详细介绍Yahoo天气预报API的主要功能、使用方法以及相关的编程知识。 1. **API接口**: Yahoo天气预报API通常提供一个基础URL,如`https://query.yahooapis.com/v1/public/yql`,开发者可以通过向这个URL...
在实现Yahoo天气预报时,开发者需要掌握如何构造请求URL,添加必要的参数(如城市代码),以及如何处理返回的数据。 再者,**HTTP请求和响应**是互联网通信的基础。在这个项目中,开发者可能使用了诸如Python的`...
标签"weather_yahoo"直接指出了主题,"天气"和"天气预报"进一步明确了我们要获取的数据类型,而"雅虎天气"和"雅虎天气获取"则强调了使用的具体服务。这两个压缩文件"Project_exe.zip"和"Project_src.zip"可能包含了...
- Yahoo Weather(https://developer.yahoo.com/weather/):提供全球天气数据,包括天气图标、温度、湿度等,适合个人和商业使用。 4. **处理返回的数据** - 使用.NET内置的XML或JSON解析库,如`System.Xml.Linq...
为了实现天气预报程序,开发者需要了解以下几个关键步骤: 1. **API请求**:构建URL,包括API的基础地址、你的API密钥、以及查询参数(如城市名称或woeid,雅虎特有的地理位置标识符)。 2. **发送请求**:使用HTTP...
首先,Yahoo天气预报服务为开发者提供了丰富的天气信息数据,这些数据可以通过特定格式的XML文档获取。开发者可以直接使用URL访问这些数据,并通过指定的参数来获取不同城市和不同温度单位的信息。 在文档中,提到...
根据给定的信息,本文将详细解释ASP.NET中的实时天气及24小时天气预报功能的实现原理,以及如何通过修改URL来获取不同城市的天气情况。 ### 一、ASP.NET概述 ASP.NET是Microsoft开发的一种用于创建动态网页的应用...
功能: 可以获取Yahoo!每日更新的天气预报,图文并茂, 可以很方便地插入到现有的ASP页面中 要求: 支持ASP,Access和MSXML2.XMLHTTP组件的服务器/虚拟主机 (大多数服务器支持MSXML2.XMLHTTP组件)
【C#天气预报源代码】项目是一个利用C#编程语言实现的应用程序,它能够通过连接Yahoo的天气API获取中国各大城市的实时天气预报信息,并在用户界面中展示出来。这个项目对于学习C#网络编程、XML解析以及GUI设计具有很...
注意仅适用于获得yahoo上的天气预报 GetWeather.aspx ———————————– 代码如下:<%@ Page language=”c#” Codebehind=”GetWeather.aspx.cs” AutoEventWireup=”false” I
【基于云计算的天气预报系统实现】的文档主要探讨了如何利用云计算技术构建一个天气预报系统,结合了GoogleMap作为信息集成的平台,并涉及到区块链技术在其中可能的应用。以下是该系统的详细解析: 1. **云计算的...
当用到雅虎的Rss天气服务时会用到。 阿巴嘎旗 CHXX0243 阿城 CHXX0001 爱辉 CHXX0174 阿合奇 CHXX0210 阿拉尔 CHXX0212 阿勒泰 CHXX0196 安达 CHXX0187 敖汉旗 CHXX0002 安康 CHXX0394 安宁...
在本文中,我们将详细讨论如何利用 XMLHTTP 获取天气预报数据,并将其展示在网页上。 首先,创建 XMLHTTP 对象是实现网络通信的第一步。在 JavaScript 中,我们通常使用 `ActiveXObject` 来创建,例如: ```...
"android高仿天气预报功能"指的是该应用可能模仿了已有的知名天气应用的界面和功能,例如模仿了Yahoo Weather或AccuWeather的设计。这涉及到UI/UX设计原则,以及使用Android的动画和过渡效果来提升用户体验。 在...