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,是不是短多了呢。