2015-09-08 | Code | Unlock

java推送天气API

因为最近在做一个项目,涉及一个小模块——推送天气。根据城市名去找天气的一些信息,比如说,高低温度,实时温度,天气状况,湿度,空气质量AQI等等。

反复找了好多天气API,最后发现小米的API挺不错的,是json格式的数据,方便读取数据。

http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=

比如说:深圳的天气代码为101280601

在浏览器上访问http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101280601

如果出现乱码,相信你应该知道怎么解决!

访问之后,我们拿到如下所示的数据:

12

相信聪明的你知道怎么看这些数据,转换成如下:

123

 

拿到这样的json格式的数据,那就好处理了。

先写一个方法:

public static byte[] readInputStream(InputStream inputStream) throws IOException {

byte[] buffer = new byte[1024];

int len = 0;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

while ((len = inputStream.read(buffer)) != -1) {

bos.write(buffer, 0, len);

}

bos.close();

return bos.toByteArray();

}

再访问API调取数据,直接读取就行:

URL url = new URL(“http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101280601");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

InputStream inputStream = conn.getInputStream(); // 通过输入流获得网站数据

byte[] getData = readInputStream(inputStream); // 获得网站的二进制数据

String data = new String(getData, “utf-8”);

System.out.println(“从网页上获取的json:” + data);

JSONObject jsonObject01 = JSONObject.fromObject(data);

JSONObject jsonObject02 = JSONObject.fromObject(jsonObject01.getJSONObject(“realtime”));

System.out.println(“湿度:” + jsonObject02.getString(“SD”));

System.out.println(“天气:” + jsonObject02.getString(“weather”));

JSONObject jsonObject03 = JSONObject.fromObject(jsonObject01.getJSONObject(“today”));

System.out.println(“高温:” + jsonObject03.getDouble(“tempMax”));

System.out.println(“低温:” + jsonObject03.getDouble(“tempMin”));

JSONObject jsonObject04 = JSONObject.fromObject(jsonObject01.getJSONObject(“aqi”));

System.out.println(“空气质量:” + jsonObject04.getInt(“aqi”));

 

这就可以得到自己想读取的数据了。

评论加载中