Bonjour,
J'ai réalisé un programme java qui utilise jsoup pour parser une page html.
Pour résumé, le fonctionnement général est le suivant :
1) Connexion à la page principale du site (qui offre des fonctionnalités de recherche) via l'instruction suivante :
Document doc = Jsoup.connect(url).get();
2) connexion aux pages référencés par la première page (retour d'une recherche sur le site en question) via :
Elements resultLinks = doc.select("td.lcobjet");
for (Element link : resultLinks) {
String urlObjet=link.select("a[href]").attr("abs:href");
Document docObjet = Jsoup.connect(urlObjet).get();
}
Mon programme tourne mais de temps en temps il plante en me retournant les lignes d'erreur suivantes :
Exception in thread "main" java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
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.http://www.protocol.http.HttpURLConn...Stream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:408)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146)
Après recherche, j'ai vu que certains conseillaient de modifier le timeout de cette façon :
Jsoup.connect(url).timeout(10000).get();
J'ai donc fait la même chose mais ça ne change rien à mon problème. De temps en temps mon programme s'arrête avec la même erreur. A noter qu'il ne plante jamais sur la même page. Donc je ne pense pas que ce soit l'url passée qui pose problème.
La première ligne de l'erreur me fait effectivement croire que c'est un problème de timeout. Mais j'en suis pas certain. Est ce bien ce que signifie l'erreur ou le problème peut être totalement différent ? Faut il que j'augmente la valeur timeout(val) ? Quelqu'un aurait d'autres pistes ?
Merci d'avance
Partager