J'obtiens une SocketTimeoutException lorsque j'essaye d'analyser beaucoup de documents HTML en utilisant Jsoup.
Par exemple, j'ai une liste de liens:
<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>
Pour chaque lien, j'analyse le document lié à l'URL (à partir de l'attribut href) pour obtenir d'autres informations dans ces pages.
Je peux donc imaginer que cela prend beaucoup de temps, mais comment fermer cette exception?
Voici toute la trace de la pile:
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)
Merci les copains!
EDIT: Hum ... Désolé, vient de trouver la solution:
Jsoup.connect(url).timeout(0).get();
J'espère que cela pourrait être utile pour quelqu'un d'autre ... :)
timeout(0)
que Jsoup reliera l'URL encore et encore jusqu'à ce qu'il se connecte.