java 生成短链接

有时候,我们给用户发送一些短信中,涉及到url问题,如果一个url太长,那么很可能就是两条短信的内容。解决这个问题的方法就是缩短url的长度,如何来缩短呢,我想有两种方法来完成。

1. 生成一定长度字符串与url的映射
   如:http://xxx/xxx/?code=123abc25
   其中123abc25就是一个与url对应的编码,这样在后台接收后,根据映射取出url,再做重定向
   操作。

2. 利用短链接来完成
   这个在微博、微信中很常用,分享一个地址,不可能很长,就利用了这个原理,从最根本上它
   是进行了重定向跳转操作。

下面通过一个例子来加以说明。

public class shortDemo {
	public static HttpClient httpclient;
	static {
		// 构造 HttpClient
		httpclient = new DefaultHttpClient();
	}

	public static String generateShortUrl(String url) {
		try {
			// 构造发送post请求
			HttpPost httpost = new HttpPost("http://dwz.cn/create.php");
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			// 传递请求参数
			params.add(new BasicNameValuePair("url", url)); // 用户名称
			httpost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
			// 发送请求并且获取执行结果
			HttpResponse response = httpclient.execute(httpost);
			// 获取结果内容
			String jsonStr = EntityUtils
					.toString(response.getEntity(), "utf-8");
			// 将结果转成json对象
			JSONObject object = JSON.parseObject(jsonStr);
			// 获取短链接地址url
			return object.getString("tinyurl");
		} catch (Exception e) {
			e.printStackTrace();
			return "Error";
		}
	}

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
			list.add("http://pay.xiaojukeji.com/new_hb/EHongbao/gethongbao?id=56187735c4ce5&codes=b642e7801a6abaaf03e51f1489fc26e5&sign=C8B40FFB024CF9A5DCE99A9D6AD4071E");
			System.out.println(generateShortUrl(list.get(0)));
	}
}

最后的结果是http://dwz.cn/1X9xaw,是不是短多了呢。

猜你喜欢

转载自gaofulai1988.iteye.com/blog/2256403
今日推荐