微信公众号开发--天气预报(Java版)
2017-09-19 20:28
316 查看
转载自:
http://www.codeweblog.com/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%B9%B3%E5%8F%B0%E6%95%B4%E5%90%88%E7%99%BE%E5%BA%A6%E5%A4%A9%E6%B0%94api/
首先需要到百度地图API上申请一个专用key,申请链接为
http://lbsyun.baidu.com/apiconsole/key
然后创建一个用于请求天气API的类。
我们请求返回的json数据封装在Javabean对象里。
Weather.java
Results.java
Status.java
而后微信请求消息的servlet中添加如下代码:
实现效果如下:
扫描下方二维码进行关注。或 微信公众号搜索 你我杂志刊
http://www.codeweblog.com/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%B9%B3%E5%8F%B0%E6%95%B4%E5%90%88%E7%99%BE%E5%BA%A6%E5%A4%A9%E6%B0%94api/
首先需要到百度地图API上申请一个专用key,申请链接为
http://lbsyun.baidu.com/apiconsole/key
然后创建一个用于请求天气API的类。
package com.zhenqi.weather; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.List; import com.google.gson.Gson; import com.zhenqi.entity.Results; import com.zhenqi.entity.Status; import com.zhenqi.entity.Weather; public class BaiDuWeather { private static String api = "http://api.map.baidu.com/telematics/v3/weather?"; private static String output = "json"; private static String ak = "你前面百度地图API上申请的key"; public static String getSend(String str) { // 将传进来的城市转码 try { str = URLEncoder.encode(str, "utf-8"); } catch (Exception e) { e.printStackTrace(); } // 拼接url StringBuffer buf = new StringBuffer(); buf.append("location="); buf.append(str); buf.append("&output="); buf.append(output); buf.append("&ak="); buf.append(ak); String param = buf.toString(); // 这是接收百度API返回的内容 String result = ""; String urlName = api + param; URL realUrl; try { realUrl = new URL(urlName); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); conn.setDoInput(true); BufferedReader br = new BufferedReader(new InputStreamReader( conn.getInputStream(),"UTF-8")); String line = br.readLine(); while (line != null) { result += line; line = br.readLine(); } br.close(); Gson gson = new Gson(); Status status = gson.fromJson(result, Status.class); List<Results> results=status.getResults(); StringBuffer bf=new StringBuffer(); for(int i=0;i<results.size();i++){ Results res=results.get(i); List<Weather> weather_data=res.getWeather_data(); for(int j=0;j<weather_data.size();j++){ Weather weather=weather_data.get(j); String date=weather.getDate(); String weath=weather.getWeather(); String temp=weather.getTemperature(); bf.append(date+" "); bf.append(weath+" "); bf.append(temp+" "); bf.append("\n"); } } return bf.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String json=getSend("广州"); System.out.println(json); } }
我们请求返回的json数据封装在Javabean对象里。
Weather.java
package com.zhenqi.entity; public class Weather { private String date; private String dayPictureUrl; private String nightPictureUrl; private String weather; private String wind; private String temperature; //由于篇幅,省略set/get方法,可以使用IDE自动生成它们 }
Results.java
package com.zhenqi.entity; import java.util.List; public class Results { private String currentCity; private List<Weather> weather_data; //由于篇幅,省略set/get方法,可以使用IDE自动生成它们 }
Status.java
package com.zhenqi.entity; import java.util.List; public class Status{ private String error; private String status; private String date; private List<Results> results; //由于篇幅,省略set/get方法,可以使用IDE自动生成它们 }
而后微信请求消息的servlet中添加如下代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); PrintWriter out = resp.getWriter(); try { Map<String,String> map = MessageUtil.xmlToMap(req); String toUserName = map.get("ToUserName"); String fromUserName = map.get("FromUserName"); String msgType = map.get("MsgType"); String content = map.get("Content"); String message = null; //MessageUtil.MESSAGE_TEXT就是 text if(MessageUtil.MESSAGE_TEXT.equals(msgType)){ if(content.endsWith("天气")){ String keyWord = content.replaceAll("天气", "").trim(); message = MessageUtil.initText(toUserName, fromUserName,BaiDuWeather.getSend(keyWord)); } } out.print(message); }catch (Exception e) { // TODO: handle exception, e.printStackTrace(); out.close(); } }
实现效果如下:
扫描下方二维码进行关注。或 微信公众号搜索 你我杂志刊
相关文章推荐
- 微信公众号开发(六):文本处理器之天气预报
- 使用asp.net开发天气预报程序
- Android 分享两个你学习android 平台开发必须碰到的几个知识点的组件【天气预报、日期】View 组件 推荐
- Android 分享两个你学习android 平台开发必须碰到的几个知识点的组件【天气预报、日期】View 组件
- 天气预报之一Dom解析(JAVA版)
- 【Android应用开发】-(17)获取Google天气预报通过Xml和JSON解析数据
- 使用Yahoo Service实现天气预报(JAVA) - ヤ仟蜘蛛 Netwom [ 专注 Internet] - 博客园
- Java获取Google天气预报 ---解决 输出乱码问题
- SWT之java天气预报 .
- java获得天气预报-webservice
- 开发天气预报 各网站的接口和实例
- Android开发 获取天气预报(天气,气温,风力...)WebService
- android版天气预报程序开发总结
- 再做JAVA天气预报
- Java获取Google的简单天气预报
- php调用google api 开发天气预报
- 微信公众平台消息接口开发(4)天气预报
- 利用中国气象网开发的天气预报接口
- Java获取Google天气预报---储存到本地
- 使用asp.net开发天气预报程序