因为要做个天气应用。须要找个天气的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

中国气象网 气象数据开放平台 API用法 (Android)的更多相关文章

  1. 基于MaxCompute的媒体大数据开放平台建设

    摘要:随着自媒体的发展,传统媒体面临着巨大的压力和挑战,新华智云运用大数据和人工智能技术,致力于为媒体行业赋能.通过媒体大数据开放平台,将媒体行业全网数据汇总起来,借助平台数据处理能力和算法能力,将有 ...

  2. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  3. Java对接拼多多开放平台API(加密上云等全流程)

    前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...

  4. 微博开放平台api使用

    前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文 ...

  5. 微信小程序,天气预报(百度地图开放平台API)

    小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...

  6. 互联网开放平台API安全设计

    互联网开放平台设计1.需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性.2.常用解决办法:2.1 使用加签名方式,防止篡改数据2.2 使用Ht ...

  7. 开放平台API接口安全策略汇总

    在设计开放平台接口过程中,往往会涉及接口传输安全性相关的问题,本文对接口加密及签名的相关知识做了一个总结,在方便自己查阅的同时也分享给大家做一些参考. 接口安全性问题思考 接口安全性问题主要来源于几方 ...

  8. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序

    我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变为现实. 自然语言对话即你的APP或者你制作的工具.机器人等能够对用户输入 ...

  9. 微信开放平台API开发资料

    微信大概两年前开启了微信公众平台的API供开发者使用,从账号登陆.消息发送.用户账号管理.公众号菜单.客服接口.微信商店接口.用户卡券接口 以及微信支付接口.可以说是全方面覆盖了电商所需要的要素,与阿 ...

随机推荐

  1. 网络I/O模型--01阻塞模式(普通)

    很长一段时间内,大多数网络通信方式都是阻塞模式,即: · 客户端 向服务器端发出请求后,客户端会一直处于等待状态(不会再做其他事情),直到服务器端返回结果或者网络出现问题 . · 服务器端同样如此,当 ...

  2. Android保持屏幕常亮

    Android保持屏幕常亮,PowerManager.WakeLock的使用 package com.hebaijun.wakelock;      import android.app.Activi ...

  3. Multiple Database Block Sizes and the Buffer Cache

    In oracle 10g we can have multiple block sizes at the same time. When a tablespace is created we can ...

  4. 软工读书笔记 week 7 ——《构建之法》

    总时长近两周的结对项目终于算是结束了,马上要重新开启团队项目.于是这几天决定对<构建之法>一书中与团队项目及需求分析有关的章节进行重点阅读,希望能够从中得到启发,并运用到接下来的团队项目中 ...

  5. windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行

    1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...

  6. 用华为eNSP模拟器配置Hybrid、Trunk和Access三种链路类型端口

    上一篇文章写到三层交换机实现多个VLAN之间互相通讯,有朋友提问要如何进行配置,可有案例分析.其实那天我在写的时候也有做过模拟,只是后来没有保存.今天重新模拟一次,并附上详细配置命令,希望能够帮助到大 ...

  7. Linux 文件的详解[分类/扩展名/inode/block]

    关于Linux文件的介绍 Linux里文件扩展名和文件类型没有关系,Linux系统中一切皆文件 关于Linux文件分类 纯文本文件(可以cat的)     二进制文件(Linux的可执行文件等,如/b ...

  8. 重置 Winsock:初始化计算机网络环境

    初始化网络环境,以解决由于软件冲突.病毒原因造成的参数错误问题(复杂网络环境下慎用).批处理代码: netsh winhttp reset proxy netsh winhttp reset trac ...

  9. CMake: Could NOT find PkgConfig

    转自http://www.ogre3d.org/forums/viewtopic.php?f=22&t=78490 Looking for OGRE... Could NOT find Pkg ...

  10. javascript excel

    js做的 excel ,  http://handsontable.com/  js keyCode对照表  http://dwz.cn/Lknbz