java - attribute - Obtengo una excepción SocketTimeoutException en Jsoup: tiempo de espera agotado para lectura



jsoup demo (3)

Creo que puedes hacer

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

que establece el tiempo de espera en 10 s

https://ffff65535.com


Obtengo una excepción SocketTimeoutException cuando trato de analizar muchos documentos HTML usando Jsoup.
Por ejemplo, obtuve una lista de enlaces:

<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>

Para cada enlace, analizo el documento vinculado a la URL (desde el atributo href) para obtener otras piezas de información en esas páginas.
Entonces, me puedo imaginar que lleva mucho tiempo, ¿pero cómo cerrar esta excepción?
Aquí está todo el rastro de la pila:

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)

Gracias amigos!

EDIT: Hum ... Lo siento, acabo de encontrar la solución:

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

Espero que pueda ser útil para otra persona ... :)


Establezca el tiempo de espera mientras se conecta desde jsoup.


Ok, intenté ofrecer esto como una edición de la respuesta de MarcoS, pero la edición fue rechazada. Sin embargo, la siguiente información puede ser útil para futuros visitantes:

Según los javadocs , el timeout de timeout predeterminado para un org.jsoup.Connection es de 30 segundos.

Como ya se mencionó, esto puede establecerse usando timeout(int millis)

Además, como las notas OP en la edición, esto también se puede establecer usando el timeout(0) . Sin embargo, como dicen los javadocs:

Un tiempo de espera de cero se trata como un tiempo de espera infinito.





jsoup