经过几个月的Android学习,自己先做一个App检验一下学习的基础知识怎么样,偶然在网上看到一些天气Api,所以自己也想实现以下,本文主要讲解在开发天气预报App第一步——怎么样获取天气预报App?
一、现有的比较好的天气数据Api(免费的)
1、百度天气Api:http://apistore.baidu.com/apiworks/servicedetail/478.html
2、新浪天气Api:http://weather.news.sina.com.cn/weather/
3、中国气象局数据开发平台:http://openweather.weather.com.cn/(我用的就是这个)
还有很多其它的天气预报数据接口,我只看了这3个,它们都差不多,都是根据你需要查询的城市,再返回JSon格式的天气预报数据。
比如中国气象局数据开放平台(SmartWeatherAPI):
使用规范:
请求方式: http get
接口组成: 由固定 URL 加 5 个不同的参数组成,完整 URL 需客户
端经过固定方式加密后使用。
数据返回: json
完整 URL:
http://open.weather.com.cn/data/?areaid=""&type=""&date=
""&appid=""&key=".urlencode($key);
固定 URL: http://open.weather.com.cn/data/
输入参数:
参数名称 | 参数含义 | 参数样例 |
---|---|---|
areaid | 区域 id | 单区域:101010100;多区域:101010100/101010200 |
type | 数据类型 | 指数:index_f(基础)、index_v(常规) 3天常规预报(24 小时):forecast_f(基础)、forecast_v (常规) |
date | 客户端日期 | 按照格式 yyyyMMddHHmm 获取客户端当前时间 |
appid | 固定分配的型号标识 | xx: 1234567890 传递参数时:截取 appid 的前 6 位生成公钥时:取完整的 appid |
key | 令牌 | 由公钥(public_key)和私钥(private_key)通过固定算法加密生成 |
其中的key=”.urlencode($key) 是根据用户在中国气象数据开放平台注册之后分配的key,进行加密之后得到的一串码文,以此来进行数据请求。
输入示例:
http://open.weather.com.cn/data/?areaid=101010100&type=forecast_f&date=201212010741&appid=123456&key=hPZf1%2F5Ag%2F4JS2A%2BcYmpj5Yv2YA%3D
其中的key就是通过加密之后得到码文。发送请求得到返回json格式数据:
"c":{
"c1":"101010100","c2":"beijing","c3":"北京","c4":"beijing","c5":"北 京","c6":"beijing","c7":"北京","c8":"china","c9":"中 国","c10":"1","c11":"010","c12":"100000","c13":"116.391","c14":"39.904","c15":"33","c16":"AZ9010"}
"f":{
"f0":"201203061100",
"f1":[ {//第一天预报数据