波斯马BOSSMA Information Technology

一个天气接口的封装及使用例子

发布时间:2012年5月29日 / 分类:ASP.NET MVC / 9,299 次浏览 / 评论

中国天气网暴露了一些获取天气信息的接口:

http://www.weather.com.cn/data/sk/101010100.html

http://www.weather.com.cn/data/cityinfo/101010100.html

http://m.weather.com.cn/data/101010100.html

这些接口会返回JSON格式的天气数据,我们可以通过解析JSON,获取相应城市的天气数据。

URL中的文件名指代城市的编号,具体的对应关系可以看下边这篇文章,本文源代码中亦有提供。

http://jerryqiu.iteye.com/blog/1106241

有了这些数据,我们就可以通过省和城市的名称查询天气了。

具体思路:

 

以查询北京天气为例,首先根据“北京”获取城市代码“101010100”,然后拼接查询Url“http://m.weather.com.cn/data/101010100.html”,发送这个Url请求,返回数据:

从中获取需要的数据就可以了。这里边的数据很详细,基本可以满足常用的需求了。看我这边显示的效果:

为了实现这个例子,

(1)首先定义了两个资源文件:

WeatherCity.txt 城市名称与代码对应

WeatherProvince.txt 省名称与代码对应,这个是从WeatherCity.txt中提炼出来的。

城市代码的前5位是所属省代码。

(2)根据省名称和城市名称获取城市代码,然后获取城市数据

这样使用中文的省和城市名称就可以快速查询天气信息了。为了更快速的构造请求天气的Url,程序对城市代码数据做了缓存,一共两千多条,存放到一个Dictionary中。

(3)这个例子使用asp.net MVC做的,移植到其它项目也很方便,核心的代码都在(2)中。

本示例中的天气数据都是实时从中国天气网获取的,有时可能速度较慢,您还可以存在本地服务器,然后按照一定的时间规则去更新最新天气情况。

这样就可以随心所欲的定义自己的天气显示方式了。

当然还有一点需要提醒到各位,此方法可以免费获取到天气数据,但是使用这些数据是需要授权的,详细请看:http://service.weather.com.cn/plugin/authorization.shtml

有兴趣的可以按照上边的思路自己试试,或者点击此处下载完整的源代码,其中实现天气接口的封装,并附带一个完全可用的示例。直接运行需要VS2010+ASP.NET MVC 3,您也可以从中获取关键的代码部分加到自己的项目中。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《一个天气接口的封装及使用例子

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有2 条评论

  1. 这种东西都要买阿 沙发:

    人家的接口早就不用了

    • 数据都有了当然也可以自己解析,我这里还做了其它一些事情,比如缓存,只是一个写代码的辛苦费而已。接口仍然可以得到有效数据,不用了从何说起?

发表评论