我在Jsoup中得到一个SocketTimeoutException:读取超时

By simon at 2018-02-07 • 0人收藏 • 69人看过

当我试图解析大量的HTML文档时,我得到一个SocketTimeoutException 使用Jsoup。 例如,我得到了一个链接列表:

<a href="www.domain.com/url1.html">link1</a>
<a href="www.domain.com/url2.html">link2</a>
<a href="www.domain.com/url3.html">link3</a>
<a href="www.domain.com/url4.html">link4</a>
对于每个链接,我解析链接到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)
谢谢哥们! 编辑:嗯...对不起,刚发现的解决方案:
Jsoup.connect(url).timeout(0).get();
希望对som有用其他... :)

4 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

我想你可以做

Jsoup.connect("...").timeout(10*1000).get(); 
它将超时设置为10秒

2018-02-07   #2

好的 - 所以,我试图把这个作为对MarcoS答案的编辑来提供,但编辑是 拒绝。尽管如此,下面的信息可能对未来有用 游客: 根据 [javadocs中](http://jsoup.org/apidocs/org/jsoup/Connection.html#timeout%28int%29), 默认[超时](https://jsoup.org/apidocs/org/jsoup/Connection.html #org.jsoup.Connection的#timeout-int-)是30秒。如前所述,可以使用timeout(int millis)进行设置 另外,由于在编辑中的OP注释,这也可以使用设置timeout(0)。 但是,正如javadocs的状态:

零超时被视为无限超时。

2018-02-07   #3

从jsoup连接时设置超时。

2018-02-07   #4

https://jsoup.org/apidocs/org/jsoup/Connection.html上有错误。 默认超时不是30秒。这是3秒钟。 Ĵ最好看看javadoc 码。它说3000毫秒。

登录后方可回帖

Loading...