【问题标题】:Jsoup get redirected URLJsoup 获取重定向 URL
【发布时间】:2014-07-23 10:18:40
【问题描述】:

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

我们以 twitter url 缩短器为例。我能够得到响应对象也解析它来获取文档。

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

现在,考虑单个重定向,从哪里获取最终 url?有什么方法或策略可以实现这一目标?

【问题讨论】:

  • 我认为Connection.Base 类有一个url() 方法
  • 你想得到最终的 url 还是所有的重定向?
  • 最终网址。所有中间网址也不会受到伤害。

标签: java jsoup url-shortener


【解决方案1】:

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

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

如果你想获得中间重定向,你应该关闭跟随重定向,然后检查标题“位置”。例如

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

如果它有多个重定向,则需要递归调用 url。

【讨论】:

    【解决方案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 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2013-02-24
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      相关资源
      最近更新 更多