从我的机器上启动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。
有人知道问题可能出在哪里吗? 预先感谢。
答案 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;
}