微信公众号开发引入外部接口查询天气预报
这里使用的"聚合数据",免费查询天气预报接口
首先进入聚合数据进行实名认证,申请相关接口数据,可以直接将示例的java代码copy下来。
我们唯一需要做的就是填写 appkey 和 接受请求参数 。
// 配置申请的KEY public static final String APPKEY = "6d5b277db885b2df42672cb10c412345";
// 1.根据城市查询天气 public static String findWeather(String city) { String result = null; String url = "http://op.juhe.cn/onebox/weather/query";// 请求接口地址 Map params = new HashMap();// 请求参数 params.put("cityname",city );// 要查询的城市,如:温州、上海、北京 params.put("key", APPKEY);// 应用APPKEY(应用详细页查询) params.put("dtype", "");// 返回数据的格式,xml或json,默认json String resp = ""; try { result = MyUtil.net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(!object.getString("reason").equals("查询成功!")){ return resp = "请输入正确城市名"; } JSONObject obj = object.getJSONObject("result") .getJSONObject("data").getJSONObject("realtime"); resp = "城市: " + obj.getString("city_name") + "\n" + "阳历: " + obj.getString("date") + "\n" + "农历: " + obj.getString("moon") + "\n" + "气温:" + obj.getJSONObject("weather").getString("temperature")+ "度\n天气状况:" + obj.getJSONObject("weather").getString("info") + "\n" + "风向: " + obj.getJSONObject("wind").getString("direct") + obj.getJSONObject("wind").getString("power"); if (object.getInt("error_code") == 0) { System.out.println(object.get("result")); } else { System.out.println(object.get("error_code") + ":" + object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } return resp; } |
利用JSONObject将返回的json字符串进行解析:
这个是将json字符串转化为json对象的一个方法,只能又JSONObject来调用
JSONObject object = JSONObject.fromObject(result);
同样,object.getJSONObject("")这个方法与上面方法意义相同,但是他是需要JSONObject对象来调用,而且可以叠加使用;
Object.getString("");通过属性得到一值…字符串格式。