短链接恢复

Last Modified: 2023/09/29

用 Java 恢复短链

短链接在工作中经常会用到,但是需要从短链接恢复长链接的场景还是很少的。如果将短链接输入浏览器中地址栏中会自动重定向到原始链接。既然浏览器能够做到,用 Java 程序也能做到。

如果能确定只重定向一次,那么可以使用下面的方法来恢复短链接:

public static String restoreShortUrl(String shortUrl) throws IOException {
  URL url = new URL(shortUrl);
  HttpURLConnection connection = null;
  try {
    connection = (HttpURLConnection) url.openConnection();
    // Disable automatic redirect
    connection.setInstanceFollowRedirects(false);
    connection.setRequestMethod("GET");
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(5000);
    return connection.getHeaderField("Location");
  } finally {
    if (connection != null) {
      connection.disconnect();
    }
  }
}

restoreShortUrl 方法接收一个短链接返回短链接的原始链接。该实现能满足绝大部分场景,而且效率也是最高的。正常情况下重定向只会发生一次,但是保不齐重定向确实有可能发生多次,如果非要考虑这种情况,可以使用下面的方法

public static String restoreShortUrl(String shortUrl) throws IOException {
  URL url = new URL(shortUrl);
  HttpURLConnection connection = null;
  try {
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(5000);
    connection.getHeaderFields();
    return connection.getURL().toExternalForm();
  } finally {
    if (connection != null) {
      connection.disconnect();
    }
  }
}

如果第一种方法能解决,不推荐这种方法。

注:restoreShortUrl 设置了超时时间,如果不合适,可以根据实际情况修改超时时间。最后附上 imports

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
有问题吗?点此反馈!

温馨提示:反馈需要登录