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


  • 相关阅读:
    web实现rtmp推流拉流(vue + nginx)
    css邊框
    通过IIS操作修改服务器文件没有权限的解决办法
    C#、ASP.NET、WinForm
    阿里云 ECS实例诊断与修复工具,将问题解决周期从24小时缩短至分钟级
    Gartner发布云产品评估报告:阿里云计算能力全球第一
    晓生:这个朋友我交定了!
    从 VMWare 到阿里神龙,虚拟化技术 40 年演进史
    如何在公有云上部署私有云?阿里云专有宿主机轻松搞定
    RHEL6.4安装出现“sda must have a GPT disk label ”解决方法
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5371495.html
Copyright © 2011-2022 走看看