Domanda

Stiamo ottenendo alcuni risultati imprevisti in modo casuale da alcuni server quando proviamo ad aprire un InputStream da una connessione HttpURLC. Sembra che quei server accetterebbero la connessione e risponderebbero con un "rimani vivo" intestazione che manterrà Socket aperto ma che non consente di inviare i dati allo stream.

Questo scenario fa un tentativo per un crawler multi-thread un po '"complicato", perché se una connessione si blocca, il thread in esecuzione non ritornerà mai ... negando il completamento del suo pool che deriva dal pensiero del controller che alcuni thread funzionano ancora.

Esiste un modo per leggere l'intestazione della risposta della connessione per identificare che "resta in vita" rispondere ed evitare di provare ad aprire lo stream ??

È stato utile?

Soluzione

Non sono sicuro di cosa mi manchi qui, ma mi sembra che tu abbia semplicemente bisogno di getHeaderField () ?

Altri suggerimenti

Hai provato a impostare " timeout di lettura " oltre a " timeout di connessione " ;?

Vedi http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout%28int%29

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top