Ich versuche, eine Anwendung erstellen, um Inhalt von mehreren Seiten auf einer Website zu entfernen. Ich verwende JSoup, um eine Verbindung herzustellen. Das ist mein Code:Umgang mit Verbindungsfehlern und JSoup
for (String locale : langList){
sitemapPath = sitemapDomain+"/"+locale+"/"+sitemapName;
try {
Document doc = Jsoup.connect(sitemapPath)
.userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
.timeout(10000)
.get();
Elements element = doc.select("loc");
for (Element urls : element) {
System.out.println(urls.text());
}
} catch (IOException e) {
System.out.println(e);
}
}
Alles funktioniert perfekt die meiste Zeit. Es gibt jedoch ein paar Dinge, die ich tun möchte.
Zuerst wird manchmal ein 404-Status zurückgegeben oder ein 500-Status vielleicht ein 301. Mit meinem Code unten wird es nur den Fehler ausdrucken und auf die nächste URL bewegen. Ich möchte in der Lage sein, den URL-Status für alle Links zurückzugeben. Wenn die Seite eine Verbindung herstellt, drucken Sie 200, wenn nicht, drucken Sie den entsprechenden Statuscode aus.
Zweitens erfahre ich manchmal diesen Fehler "java.net.SocketTimeoutException: Zeitüberschreitung gelesen" Ich könnte mein Timeout erhöhen, aber ich würde lieber versuchen, 3 mal zu verbinden, nach dem dritten Mal möchte ich die URL zu einem hinzufügen "fehlgeschlagen" Array, so dass ich die fehlgeschlagenen Verbindungen in der Zukunft erneut versuchen kann.
Kann mir jemand mit mehr Wissen als ich helfen?
erzeugt eine Ausnahme –