可以jsoup处理元刷新重定向

Kar*_*ik 7 java jsoup

我有一个问题,使用jsoup,我想要做的是从网址获取一个文件,它会重定向到另一个基于元刷新网址的网址,这是无法正常工作,清楚地解释我是否输入了一个名为http://的网站网址www.amerisourcebergendrug.com将根据元刷新网址自动重定向到http://www.amerisourcebergendrug.com/abcdrug/但我的jsoup仍然坚持http://www.amerisourcebergendrug.com而不是重定向和取自http://www.amerisourcebergendrug.com/abcdrug/

Document doc = Jsoup.connect("http://www.amerisourcebergendrug.com").get();
Run Code Online (Sandbox Code Playgroud)

我也试过用,

Document doc = Jsoup.connect("http://www.amerisourcebergendrug.com").followRedirects(true).get();
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用

有什么解决方法吗?

更新: 页面可能使用元刷新重定向方法

dac*_*cwe 13

更新(不区分大小写且容错的容错)


public static void main(String[] args) throws Exception {

    URI uri = URI.create("http://www.amerisourcebergendrug.com");

    Document d = Jsoup.connect(uri.toString()).get();

    for (Element refresh : d.select("html head meta[http-equiv=refresh]")) {

        Matcher m = Pattern.compile("(?si)\\d+;\\s*url=(.+)|\\d+")
                           .matcher(refresh.attr("content"));

        // find the first one that is valid
        if (m.matches()) {
            if (m.group(1) != null)
                d = Jsoup.connect(uri.resolve(m.group(1)).toString()).get();
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出正确:

http://www.amerisourcebergendrug.com/abcdrug/
Run Code Online (Sandbox Code Playgroud)

老答案:

你确定它不起作用吗?为了我:

System.out.println(Jsoup.connect("http://www.ibm.com").get().baseUri());
Run Code Online (Sandbox Code Playgroud)

..输出http://www.ibm.com/us/en/正确..