JAVA通过API获取天气预报信息(HTTP协议)

public class GetWeather {
    public static void main(String[] args) {
        String httpUrl = "http://apis.baidu.com/apistore/weatherservice/citylist";
        String httpArg = "cityname=%E6%9C%9D%E9%98%B3";
        String jsonResult = request(httpUrl, httpArg);
        System.out.println(unicode2String(jsonResult));
    }

    /**
     * @param urlAll
     *            :请求接口
     * @param httpArg
     *            :参数
     * @return 返回结果
     */
    public static String request(String httpUrl, String httpArg) {
        BufferedReader reader = null;
        String result = null;
        StringBuffer sbf = new StringBuffer();
        httpUrl = httpUrl + "?" + httpArg;

        try {
            URL url = new URL(httpUrl);
            HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
            connection.setRequestMethod("GET");
            // 填入apikey到HTTP header
            connection.setRequestProperty("apikey",  "92b9ce55bfdc6d18aff38a18cd286b8d");
            connection.connect();

            InputStream is = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            result = sbf.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    //将返回的中文字符的编码(乱码)处理一下,转换成正确的中文
    public static String unicode2String(String str){
        int indexU=0;
        StringBuffer result=new StringBuffer();
        char t;
        indexU=str.indexOf("\\u");
        while(indexU>=0){
            result.append(str.substring(0,indexU));
            t=(char)Integer.parseInt(str.substring(indexU+2,indexU+6),16);
            result.append(t);
            str=str.substring(indexU+6);
            indexU=str.indexOf("\\u");
        }
        return result.toString();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值