因为本身闲着的时候写了一个微信公众平台的小应用 也参考了不少别人的源码 再此感谢那些被我参考过的大神们
html
本着开源的精神 http://git.oschina.net/bddiudiu/wechat_Spring 个人项目也开源了 大部分都是参考了 智云同窗的项目 java
项目目前部署与新浪SEA 访问地址 http://diuwx.sinaapp.com git
好了 很少说微信的这个项目 咱们来说一下 如何整合百度的API一块儿进来 顺便也给本身往后留下一些痕迹json
首先咱们查看百度车联网的API页面 咱们找到咱们须要的天气接口 同时咱们也申请一个ak key 具体申请KEY这里就不说了api
获得KEY 以及 api的url和各类参数 咱们开始将百度的天气接口整合进咱们的项目微信
百度的这个接口,咱们要在项目中模拟一次http提交.app
既然这样 那咱们就看一下他的url提交地址微信公众平台
http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourkey
看一下地址咱们就会看出来,这个url须要拼接3个参数.工具
location 咱们须要查询的城市url
output 返回给咱们的数据格式
ak 咱们的 ak key
固然他还有别的参数 咱们这里暂时不用.
好 知道了url以后咱们在项目中新建一个工具类 咱们就叫他baiduutil.java
而后咱们新建3个参数
private static String api = "http://api.map.baidu.com/telematics/v3/weather?"; private static String output = "json"; private static String ak = "your key";
而后 咱们写一个方法 就是向百度提交url
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())); String line = br.readLine(); while (line != null) { result += line; line = br.readLine(); } br.close(); return result; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
以上的代码将会返回来一段json数据.固然若是你的output是xml你获得的就是xml格式的.
下面咱们就须要解析这返回来的json数据
{ "error":0, "status":"success", "date":"2014-05-09", "results":[ { "currentCity":"\u5317\u4eac", "weather_data":[ { "date":"\u5468\u4e94(\u4eca\u5929, \u5b9e\u65f6\uff1a19\u2103)", "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/yin.png", "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/yin.png", "weather":"\u9634", "wind":"\u5fae\u98ce", "temperature":"20 ~ 14\u2103" }, { "date":"\u5468\u516d", "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/zhenyu.png", "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/xiaoyu.png", "weather":"\u9635\u96e8\u8f6c\u5c0f\u96e8", "wind":"\u5fae\u98ce", "temperature":"19 ~ 11\u2103" }, { "date":"\u5468\u65e5", "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/xiaoyu.png", "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png", "weather":"\u5c0f\u96e8\u8f6c\u6674", "wind":"\u5fae\u98ce", "temperature":"19 ~ 10\u2103" }, { "date":"\u5468\u4e00", "dayPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/day\/qing.png", "nightPictureUrl":"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png", "weather":"\u6674", "wind":"\u5fae\u98ce", "temperature":"28 ~ 14\u2103" } ] } ] }
以上就是百度返回给咱们的json格式.
咱们使用Gson来解析.
首先新建3个类
class Status{ private String error; private String status; private String date; private List<Results> results; } class Results{ private String currentCity; private List<Weather> weather_data; } class Weather{ private String date; private String dayPictureUrl; private String nightPictureUrl; private String weather; private String wind; private String temperature; }
并生成get/set方法.
而后 咱们使用Gson来解析 传进来的JSON字符串是 json
Gson gson = new Gson(); Status status = gson.fromJson(json, Status.class);
而后下面就是本身去获取 status里面的内容 而后返回到 微信公众平台