来自某些服务器的某些URL上的JSoup超时

时间:2019-02-08 02:13:36

标签: dom jsoup

从我的机器上启动JSoup脚本=>正常工作。

从我的远程服务器上启动相同的脚本=>引发java.net.SocketTimeoutException: connect timed out错误。

我仅使用某些URL重现该问题。我尝试从此远程服务器在其他网页上启动相同的脚本,一切正常。

我的脚本:

private Document getDom(String root){
    Document dom = null;
    try {
        dom = Jsoup.connect(root).get();
    } catch (IOException e){
        System.out.println(e);
        try {
            dom = Jsoup.parse(new URL(root).openStream(), "UTF-8", root);
        } catch (IOException e2){
            System.out.println(e2);
        }
    }
    return dom;
}

root是目标URL,在我的示例中是https://hightest.nc/sitemap.xml

有人知道问题可能出在哪里吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

我只是运行了这段代码,当我修复了catch块时,它为我返回了您的XML。第一个catch似乎没有正确关闭。连接超时的另一个潜在问题是您没有添加userAgent。尝试下面已测试过的代码块,它对我有用。

从服务器上,您还可以尝试调整连接的超时,以查看是否适合您。尝试将其调整为更高的超时时间。 .timeout(7000)

 private Document getDom(String root){
        Document dom = null;
        try {
            dom = Jsoup.connect(root)
                    .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) 
           AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
                    .get();
        } catch (IOException e) {
            System.out.println(e);
        }
            try {
                dom = Jsoup.parse(new URL(root).openStream(), "UTF-8", root);

            } catch (IOException e2){

                System.out.println(e2);
            }

          return dom;

        }