需求
其实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