Jsoup获取重定向的URL

时间:2014-07-23 10:18:41

标签: java jsoup url-shortener

我试图从网址缩短器提供的网址中获取实际(重定向)网址。

让我们以twitter url shortener为例。我能够让响应对象也解析它以获取文档。

Response response = Jsoup.connect("http://t.co/i5dE1K4vSs")
                .followRedirects(true) //to follow redirects
                .execute();

现在,考虑单个重定向,从哪里获取最终的网址?任何实现这一目标的方法或策略?

2 个答案:

答案 0 :(得分:19)

Response对象有一个url()方法,该方法应该为您提供最终的url。所以你可以这样做

String url = "http://t.co/i5dE1K4vSs";
Response response = Jsoup.connect(url).followRedirects(true).execute();
System.out.println(response.url())

如果你想获得中间重定向,你应该关闭重定向,然后检查标题" location"。例如

String url = "http://t.co/i5dE1K4vSs";
Response response = Jsoup.connect(url).followRedirects(false).execute();
System.out.println(response.header("location"));

如果它有多个重定向,则需要以递归方式调用网址。

答案 1 :(得分:2)

代码:

String originalUrl = Jsoup.connect("http://t.co/i5dE1K4vSs")
                        .followRedirects(true) //to follow redirects
                        .execute().url().toExternalForm();
System.out.println(originalUrl);

输出:

http://ibnlive.in.com/news/messi-considered-move-to-arsenal/487799-5-21.html

说明:

由于Connection.Response具有Connection.Base作为超接口,您可以使用它的#url()方法(然后根据需要使用URL对象。