在很多时候我们都需要使用到短链接,比较常见的是在生成微信二维码的时候,长的url不能生成二维码,必须使用短链接。所以短链接的生成就尤其重要,废话不多说,下面直接介绍三种生成短链接的工具类
一、使用百度的短链接服务生成短链接 (可能不太稳定,时而能获取二维码 时而不能获取)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class ShortNetAddressUtil { private static Logger log = LoggerFactory.getLogger(ShortNetAddressUtil.class); public static int TIMEOUT = 30 * 1000; public static String ENCODING = "UTF-8"; /** * 根据传入的url,通过访问百度短链接的接口, 将其转换成短的URL * * @param originURL * @return */ public static String getShortURL(String originURL) { String tinyUrl = null; try { // 指定百度短链接的接口 URL url = new URL("http://dwz.cn/create.php"); // 建立连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置连接的参数 // 使用连接进行输出 connection.setDoOutput(true); // 使用连接进行输入 connection.setDoInput(true); // 不使用缓存 connection.setUseCaches(false); // 设置连接超时时间为30秒 connection.setConnectTimeout(TIMEOUT); // 设置请求模式为POST connection.setRequestMethod("POST"); // 设置POST信息,这里为传入的原始URL String postData = URLEncoder.encode(originURL.toString(), "utf-8"); // 输出原始的url connection.getOutputStream().write(("url=" + postData).getBytes()); // 连接百度短视频接口 connection.connect(); // 获取返回的字符串 String responseStr = getResponseStr(connection); log.info("response string: " + responseStr); // 在字符串里获取tinyurl,即短链接 tinyUrl = getValueByKey(responseStr, "tinyurl"); log.info("tinyurl: " + tinyUrl); // 关闭链接 connection.disconnect(); } catch (IOException e) { log.error("getshortURL error:" + e.toString()); } return tinyUrl; }