Saya mendapatkan SocketTimeoutException ketika saya mencoba mengurai banyak dokumen HTML menggunakan Jsoup.
Misalnya, saya mendapat daftar tautan:
<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>
Untuk setiap link, saya mengurai dokumen yang ditautkan ke URL (dari atribut href) untuk mendapatkan informasi lain di halaman tersebut.
Jadi saya dapat membayangkan bahwa itu membutuhkan banyak waktu, tetapi bagaimana cara mematikan pengecualian ini?
Berikut ini seluruh jejak tumpukan:
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)
Terima kasih sobat!
EDIT: Hum ... Maaf, baru saja menemukan solusinya:
Jsoup.connect(url).timeout(0).get();
Semoga bisa bermanfaat untuk orang lain ... :)
timeout(0)
akan membuat Jsoup menghubungkan url lagi dan lagi sampai terhubung.