java获取超时异常_我在Jsoup中得到一个SocketTimeoutException:读取超时

问题

当我尝试使用Jsoup解析大量HTML文档时,我得到一个SocketTimeoutException。

例如,我有一个链接列表:

link1

link2

link3

link4

对于每个链接,我解析链接到URL的文档(来自href属性)以获取这些页面中的其他信息。

所以我可以想象它需要很多时间,但是如何关闭这个异常呢?

这是整个堆栈跟踪:

java.net.SocketTimeoutException: Read timed out

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(Unknown Source)

at java.io.BufferedInputStream.fill(Unknown Source)

at java.io.BufferedInputStream.read1(Unknown Source)

at java.io.BufferedInputStream.read(Unknown Source)

at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)

at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

at java.net.HttpURLConnection.getResponseCode(Unknown Source)

at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:381)

at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)

at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)

at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132)

at app.ForumCrawler.crawl(ForumCrawler.java:50)

at Main.main(Main.java:15)

谢谢你的哥们!

**编辑:**Hum ...对不起,刚刚找到解决方案:

Jsoup.connect(url).timeout(0).get();

希望对其他人有用... :)

#1 热门回答(134 赞)

我想你可以做到

Jsoup.connect("...").timeout(10*1000).get();

将超时设置为10秒

#2 热门回答(24 赞)

好的 - 所以,我尝试将此作为对MarcoS答案的编辑,但编辑被拒绝了。不过,以下信息可能对未来的访问者有用:

根据javadocs,默认timeoutfor anorg.jsoup.Connection是30秒。

如已经提到的,这可以使用timeout(int millis)来设置

另外,如编辑中的OP注释,也可以使用timeout(0)进行设置。但是,正如javadocs所述:

超时为零被视为无限超时。

#3 热门回答(1 赞)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值