一.场景:
在大部分情况下我们使用URl可以访问自己的或者别人的地址,但是有些时候这个URL实在是太长,比如你想在微博或者贴吧加个广告链接,但由于链接太长会导致不可访问。这个时候就需要你使用短链URL。
二.短链的原理:
详细的原理还请百度专业的介绍。假如你使用的是新浪的短链生成接口生成短链,其可以理解为你把自己的原始链接告诉新浪的服务器,它给你返回一个短链地址。当你请求这个地址的时候,他会给你定向到原始的URL地址上访问对应的资源。
三.代码实现
1.选择你要生成短链的服务商,比如我用的是新浪。那么就需要在新浪注册自己的用户信息,若是公司的最好填写完全的公司信息,最终获取AppKey。
2.参考文档地址: http://open.weibo.com/wiki/Short_url/shorten ,也可以登录自己注册的账户搜索Short_url,找到自己 适用得到接口文档。
3.代码如下:
httpArg:外部可访问需要转短链的原始url。
AppKey: 自己申请的注册用户的AppKey。
private static String APIURL="http://api.t.sina.com.cn/short_url/shorten.json?source="自己的AppKey"&url_long=";
public static String urltoshort(String httpArg) {
String httpUrl=APIURL;
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
String url_short="";
try {
httpUrl = httpUrl + URLEncoder.encode(httpArg,"UTF-8");
URL url = new URL(httpUrl);
System.out.println("url:"+httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
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();
JSONArray js =new JSONArray(sbf.toString());
JSONObject jb=(JSONObject)js.get(0);
url_short =jb.get("url_short").toString();
} catch (Exception e) {
e.printStackTrace();
}
return url_short;
}
如有问题还请指正,共同探讨。