zoukankan      html  css  js  c++  java
  • 中国气象网 气象数据开放平台 API用法 (Android)

    因为要做个天气应用。须要找个天气的API。上网上搜了下都是那几个,并且基本都过时了。百度有个天气API,只是貌似仅仅能提供当天的。网上提到的中国气象接口的文章,大都用的时旧API,有的被封了,有的永远停到了2014年3月24不更新了。

    后来找到了中国天气的新接口,已经升级成气象数据开放平台了http://openweather.weather.com.cn/。没有开发人员社区或论坛什么的,仅仅能自己琢磨他的文档了(感觉没人维护。。)。

    经过几个疑难点卡住后。总算调通了。

    现分享给大家。


    1.申请keys

    首先注冊账号。然后填资料等审核(还要身份证。

    。。)。话说审核真是慢,我等了一个星期才审核通过,之后就有了自己的Key了,这个请求天气数据时会用到。


    2.申请服务

    审核通过后,就能够去产品中心那申请接口了。眼下有两种:常规气象数据接口与基础气象数据接口。

    差别在于常规的比基础的城市多。至于价钱么,不要300/年,不要30/年,如今大优惠仅仅需0/年,常规气象数据接口带回家:P。


    3.研读API文档

    有JAVA的演示样例代码能够參考,主要包括key加密的内容。能够直接用,其它请求等须要自己写。

    请求用get,解析用json,没什么难点,主要是加密这。。。

    这个加密之前也没怎么太上心看,结果看晕了,卡了不少时间。

    主要加密由public_key与private_key结合,作为key这个參数,一起传递过去。

    传递URL格式例如以下:

    http://open.weather.com.cn/data/?areaid="areaid"&type="type"&date="date"&appid="appid_six"&key="key"

    參数介绍:

    areaid:城市地区代码,官方有表格提供。能够考虑用101010100(北京)

    type:请求数据的类型:指数:index_f(基础接口);index_v(常规接口); 3天预报:forecast_f(基础接口);forecast_v(常规接口);我用的forecast_v

    date:当前时间  格式yyyyMMddHHmm  如201506051423

    appid:这是个坑。这块正式请求时,用的是appid的前六位,我在这卡了非常久。。

    。仅仅有作为public_key时才用完整的appid,后边会说

    key:到了这个复杂的东西了。这块用到三个东西来完毕,首先:

    private_key:申请到的那个key

    public_key:格式例如以下。与传递的URL类似但不同,其一在于没有key參数,其二在于appid使用的是完整的appid。这非常重要

    http://open.weather.com.cn/data/?areaid="areaid"&type="type"&date="date"&appid="appid_full"

    然后有个这两个之后,使用提供的java演示样例代码中的standardURLEncoder(public_key。private_key),将公钥和私钥结合为key參数

    之后基本就能够收到返回的天气信息了。


    4.解析天气信息

    返回的json信息就不多说了,官方提供的文档有相应的解释,就是參数都是c1,c2...fa,fb,fc之类的,太不人性化了。

    在这遇到的主要问题是。返回的汉子乱码。。

    。。

    预计可能时因为和server端使用的编码不同,不是utf-8。。

    。。。

    并且官方啥都没说。。。。。

    没办法,我就仅仅能苦逼的一个一个编码尝试,用了好多种方法解码总算是还原为汉字了。方法例如以下:

    byte[] converttoBytes = weather.city.getBytes("ISO-8859-1");
    			String s1 = new String(converttoBytes);
    			System.out.println(s1);
    			weather.city = s1;

    经过測试,传来的汉字格式竟然是ISO-8859-1的?(此处如理解有错误,请指正)好吧。感觉非常奇葩--!


    到这大家基本就都能顺利调通了吧,相信小伙伴都没问题的

    项目地址:https://github.com/rsy210/MyWeather

    转载请注明出处哈http://blog.csdn.net/lqc1992/article/details/46375567


  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5371495.html
Copyright © 2011-2022 走看看