在Java中解析缩短的目标URL链接的最快方法是什么?

时间:2010-12-22 01:01:15

标签: java

哪个库或内置功能可以让您使用缩短的网址,如bitly,fb.me,google的缩短等等...并在最快的时间内获得最终链接?

感谢

3 个答案:

答案 0 :(得分:7)

  

主要是编程时间,我现在正在使用来自apache的httpclient,想知道它们是否是内置的任何替代方案

java.net.URLConnection

String location = "http://tinyurl.com/so-hints";
HttpURLConnection connection = (HttpURLConnection) new URL(location).openConnection();
connection.setInstanceFollowRedirects(false);
while (connection.getResponseCode() / 100 == 3) {
    location = connection.getHeaderField("location");
    connection = (HttpURLConnection) new URL(location).openConnection();
}
System.out.println(location); // http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx

答案 1 :(得分:2)

这不是一个真正的答案,但您基本上需要通过HTTP客户端调用缩短的URL,然后查看响应中302头的内容。然后将用户重定向到该URL。

(我想知道你为什么要这样做,只需将缩短的网址作为302重定向发送,让它们再次反弹)。

答案 2 :(得分:2)

我一直在寻找同样的,以及BalusC上面提出的建议。我在这里有一个修复,实际上是一个增强。

String location = "http://j.mp/mAag6Q";
HttpURLConnection connection = (HttpURLConnection) new URL(location).openConnection();
connection.setInstanceFollowRedirects(false);
while (connection.getResponseCode() / 100 == 3) {
    location = connection.getHeaderField("location");
    System.out.println(location);
    connection = (HttpURLConnection) new URL(location).openConnection();
    **connection.setInstanceFollowRedirects(false);**
}

基本上我所做的就是在循环中再次将连接的setInstanceFollowRedirects设置为false,这样它也可以处理多级重定向。