HttpURLConnections ignorieren Timeouts und nie wieder zurückkehren
-
10-07-2019 - |
Frage
Wir sind immer zufällig einige unerwartete Ergebnisse von einigen Servern bei dem Versuch, einen Inputstream von einem HttpURLConnection zu öffnen. Es scheint, wie dieser Server würde die Verbindung akzeptieren und mit einem „Stay-alive“ header antworten, die den Sockel offen halten, aber erlaubt keine Daten in den Stream zurückgeschickt werden.
macht das Szenario einen Versuch für eine Multi-Threaded-Crawler ein wenig „kompliziert“, denn wenn einige Verbindung stecken bleibt, läuft der Faden würde es nie wieder zurückkehren ... Leugnung der Vollendung davon Pool ist, die in der Steuerung Denken ableitet, dass einige Threads arbeiten noch.
Gibt es eine Möglichkeit, die Verbindung Antwort-Header zu identifizieren, zu lesen, dass „Stay-alive“ Antwort und vermeiden versuchen, den Stream zu öffnen ??
Lösung
Ich bin mir nicht sicher, was ich bin fehlt hier aber es scheint mir, müssen Sie einfach getHeaderField () ?
Andere Tipps
Haben Sie versucht, Einstellung, zusätzlich "Zeit ausgelesen" zu "connect time out"?
Siehe http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout%28int%29