微信公众号开发引入外部接口查询天气预报

这里使用的"聚合数据",免费查询天气预报接口

   

首先进入聚合数据进行实名认证,申请相关接口数据,可以直接将示例的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", "");// 返回数据的格式,xmljson,默认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("");通过属性得到一值…字符串格式。

posted @ 2020-10-27 20:18  黑质白章  阅读(344)  评论(0编辑  收藏  举报