HttpURLConnections игнорирует тайм-ауты и никогда не возвращается

StackOverflow https://stackoverflow.com/questions/634931

  •  10-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top