天气预报功能--查询广州天气的实现

中国气象局接口提供了一个地址,里面是当天的天气状况,数据的格式是Json,Json数据是一串用大括号包住的,里面是一个个键值对的字符串。键名:键值,我需要当天的数据格式,如何从Json数据取出我所要的信息呢,Java提供了一个类:JsonObject

JSONObject json=new JSONObject(r.getResult());
JSONObject weatherinfo = json.getJSONObject("weatherinfo");
city.setCity(weatherinfo.getString("city"));

我可以用它的getString方法获取我想要键名对应的键值,放入City对象中,接下来就是联网操作的工作了。

HttpGet httpGet = new HttpGet("http://m.weather.com.cn/atad/" + cityID + ".html");

联网有httpGet和httpPose两种方法,前者把数据封装在URL中,后者封装在网址的body中(应该是吧.....),这里我用了httpGet方法

<span style="font-size:12px;">httpResponse = httpClient.execute(httpGet);
//httpResponse为响应
httpEntity = httpResponse.getEntity();
//httpEntity为内容
inputStream = httpEntity.getContent();
//inputStream为内容的响应流</span>

所谓联网,就是向网站发送一条请求信息,如果请求成功,网站会返回一串响应数据,然后连接断开,客户端通过解析操作将信息以图片,链接,文字等形式展现在屏幕上,让客户操作,气象局接口也是这样,当你发送了请求后,该网站会返回一个响应数据,我们获取它的内容后得到它的响应流(至于是什么格式的请原谅我也不清楚...)

<span style="font-size:12px;">BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while((line = reader.readLine()) != null){
	result = result + line;
}</span>

用BufferedReader这个类去解析它,最终将Json格式存放进这个result的字符串中,就可以调用JsonObject来获取它里面的信息了。因为需要修改界面的控件,所以需要一个handler机制去发送消息,通知主界面在主线程中更新UI

Message msg1 = new Message();
Bundle b1 = new Bundle();//存放数据
b1.putString("result", result);
msg1.setData(b1);
MainInterface.handlerGuangzhou.sendMessage(msg1);

这样,查询广州天气功能就实现了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值