前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信个人公众号开发--(4)Java实现天气查询功能

微信个人公众号开发--(4)Java实现天气查询功能

作者头像
浩Coding
发布2019-07-02 16:11:33
1.2K0
发布2019-07-02 16:11:33
举报
文章被收录于专栏:浩Coding浩Coding

首先我们需要一个天气查询的数据接口,这里我用的是极速数据(百度即可),然后申请一个免费的账号,可以找到免费的天气数据接口,当然有次数限制,不过这已经够我们个人微信公众号使用了.

然后可以查看具体的API,有如何请求数据,以及返回的数据格式(json).

还可以查看具体的代码实现,我们这里选择用java实现:

这只是测试代码,而我们需要改成我们自己想要的,比如参数里面加上城市名称,可以查询具体城市的天气情况,我们把网址提供的代码封装成一个具体的天气查询工具类:QueryWeather

public class QueryWeather {

public static final String APPKEY = "1b3dabf9081a0fa4";// 你的appkey

public static final String URL = "http://api.jisuapi.com/weather/query";//天气查询接口地址

//这个方法可以实现输入城市,返回相应的天气情况

public static String Get(String cityURl) throws Exception {

String result = null;

String url = URL + "?appkey=" + APPKEY + "&city=" + URLEncoder.encode(cityURl, "utf-8");

String weatherString = "";// 返回的数据

try {

result = HttpUtil.sendGet(url, "utf-8");//下载网站给的源码即可

JSONObject json = JSONObject.fromObject(result);

if (json.getInt("status") != 0) {//具体错误代码,可以看网站的API

System.out.println(json.getString("msg"));

weatherString += "获取发生错误,错误信息为:" + json.getString("msg");

} else {

JSONObject resultarr = json.optJSONObject("result");

String city = resultarr.getString("city");

weatherString += "城市:" + city + "\n";

String cityid = resultarr.getString("cityid");

String date = resultarr.getString("date");

String week = resultarr.getString("week");

weatherString += "时间:" + date + " " + week + "\n";

String weather = resultarr.getString("weather");

String temp = resultarr.getString("temp");

weatherString += "天气情况:" + weather + "\n当前温度:" + temp + "\n最高温度:" + temphigh + "\n最低温度:" + templow

+ "\n风向:" + winddirect + "\n风级:" + resultarr.getString("windpower") + "\n";

//还有很多代码,碍于篇幅,不在赘述,详细代码,以后我会贴出我的github地址,供大家下载交流,有问题可以公众号留言.

}

} catch (Exception e) {

e.printStackTrace();

} finally {

}

return weatherString;//返回天气情况

}

下面开始我们的Servlet消息控制类:

if (MessageUtil.MESSAGE_TEXT.equals(msgType)) {

if ("1".equals(content)) {//1 回复关键字1 了解更多公众号信息!

message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.testResponse(content));

} else if ("2".equals(content)) {//2 回复关键字2 更多公众号精彩文章!

message = MessageUtil.initNewsMessage(toUserName, fromUserName);

} else if (content.contains("天气")) {//3 回复关键字城市 + 天气 例如石家庄天气

//回复的关键字需要把天气二字去掉

message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.weatherResponse(content.substring(0,content.length()-2)));

} else if ("?".equals(content) || "?".equals(content)|| "帮助".equals(content)|| "嗨".equals(content)) {

message = MessageUtil.initText(toUserName, fromUserName,MessageUtil.menuText());

}

else{//智能问答回复消息

System.out.println("智能问答:=="+content);

message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.AIResponse(content));

}

} else if (MessageUtil.MESSAGE_EVENT.equals(msgType)) {// 事件推送

String eventType = map.get("Event"); // 事件分成多种,分别判断处理

if (MessageUtil.MESSAGE_EVENT_SUBSCRIBE.equals(eventType)) { // 这里先写一个关注之后的事件

message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText());

}

之后回复天气+城市名即可获得天气情况,具体更加详细的天气数据的获取,详见网站API,同时还有其它数据接口可供我们使用,同理,会使用一个接口后,其它也一样.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档