HttpURLConnections игнорирует тайм-ауты и никогда не возвращается - PullRequest
3 голосов
/ 11 марта 2009

Мы получаем некоторые неожиданные результаты случайным образом с некоторых серверов при попытке открыть InputStream из соединения HttpURLConnection. Похоже, что эти серверы примут соединение и ответят заголовком «keep-alive», который будет держать Socket открытым, но не позволит отправлять данные обратно в поток.

Этот сценарий делает попытку многопоточного сканера немного "сложной", потому что, если какое-то соединение застревает, поток, который он выполняет, никогда не вернется ... отрицая завершение своего пула, который выводится из контроллера, думая, что некоторые темы все еще работают.

Есть ли какой-нибудь способ прочитать заголовок ответа соединения, чтобы идентифицировать этот ответ "остаться в живых" и не пытаться открыть поток ??

Ответы [ 2 ]

1 голос
/ 12 марта 2009

Я не уверен, что мне здесь не хватает, но мне кажется, вам просто нужно getHeaderField () ?

1 голос
/ 11 марта 2009

Вы пробовали установить «время ожидания чтения», в дополнение к «время ожидания соединения»?

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

...