Ottengo un'eccezione SocketTimeoutException quando provo ad analizzare molti documenti HTML utilizzando Jsoup.
Ad esempio, ho un elenco di link:
<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>
Per ogni collegamento, analizzo il documento collegato all'URL (dall'attributo href) per ottenere altre informazioni in quelle pagine.
Quindi posso immaginare che ci voglia molto tempo, ma come disattivare questa eccezione?
Ecco l'intera traccia dello stack:
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)
Grazie amici!
EDIT: Hum ... Scusa, ho appena trovato la soluzione:
Jsoup.connect(url).timeout(0).get();
Spero che possa essere utile per qualcun altro ... :)
timeout(0)
che Jsoup collegherà l'URL ancora e ancora finché non si connetterà.