java请求微博短链接API

需求

其实java后台请求微博短链接我的内心是拒绝的,但是没办法,需要做…嗯这就是需求,需求决定代码嘛,公司实现了功能了,你才能更好的上班去.

操作思路

首先,翻翻微博短链接API,提示你会采用get方式请求一个url,那么思路如此
1.模拟get请求
2.解析json数据

蛋疼的地方

{
    "urls": [
        {
            "object_type": "",
            "result": true,
            "url_short": "http://t.cn/RMo9FOW",
            "object_id": "",
            "url_long": "http://www.youka.la/links/D1935A80DF51ABC9",
            "type": 0
        }
    ]
}

解决方案

/**
     * 模拟get请求
     *
     * @return
     */
    public String sendGet(String apiLink) throws Exception {
        StringBuffer sb = new StringBuffer();
        URL url = new URL(apiLink);
        InputStreamReader isr = new InputStreamReader(url.openStream());
        char[] buffer = new char[10];
        while (isr.read(buffer) != -1) {
            sb.append(buffer);
        }
        isr.close();
        return sb.toString();
    }

    public static void main(String[] args) {
        Link link = new Link();
        String url = "https://api.weibo.com/2/short_url/shorten.json?source=xxxxx&url_long=http://www.youka.la/links/D1935A80DF51ABC9";
        try {
            String jsonString = link.sendGet(url);
            jsonString = jsonString.replace("[", "").replace("]", "");
            JSONObject jsonobj = JSONObject.parseObject(jsonString);
            jsonString = jsonobj.getString("urls");
            jsonobj = JSONObject.parseObject(jsonString);
            System.out.println(jsonobj.getString("url_short"));
        } catch (Exception e) {
            System.out.printf(e.toString());
        }
    }

备注:
source=xxxxx中的xxxx为微博下发的.

原理

就是采用了两次实例化数据为json对象,然后解析,中途由于有”[“”]”如果不清理是不符合json格式的,所以采用了替换处理.

本文来自于失眠的波妞网中java请求微博短链接API

你可能感兴趣的:(java请求微博短链接API)