Тайм-аут получения запроса, даже если тайм-аут подключения и тайм-аут чтения установлены по умолчанию (бесконечно)? - PullRequest
1 голос
/ 03 апреля 2012

Я подключаюсь к веб-службе и не установил тайм-аут соединения и тайм-аут чтения на HttpURLConnection.Что такое время ожидания подключения по умолчанию и время ожидания чтения?Это зависит от телефона Android?Или у Android / Java есть собственное значение по умолчанию для тайм-аута?

Когда я пытаюсь получить значение моего тайм-аута подключения (getConnectTimeout()) и чтения тайм-аута (getReadTimeout()), он возвращает значение0, который я предполагаю, является эквивалентом бесконечности.Однако, хотя их значение равно 0, иногда я получаю сообщение об ошибке тайм-аута запроса.Поэтому их значение не может быть равным бесконечности.Может ли кто-нибудь просветить меня об этом?

Ответы [ 3 ]

3 голосов
/ 03 апреля 2012

Вы проводили какие-нибудь исследования? Значения по умолчанию указаны в документации . Вот соответствующие части:

public void setConnectTimeout (int timeout) Начиная с: Уровень API 1

Устанавливает значение времени ожидания в миллисекундах для установления соединения. к ресурсу, указанному этим экземпляром URLConnection. SocketTimeoutException генерируется, если соединение не может быть установлено в это время. По умолчанию 0, что означает бесконечность тайм-аут.

public void setReadTimeout (int timeout) Начиная с: Уровень API 1

Устанавливает значение времени ожидания в миллисекундах для чтения из ввода поток установленного соединения с ресурсом. SocketTimeoutException генерируется, если соединение не может быть установлено в это время. По умолчанию 0, что означает бесконечность тайм-аут.

Также есть это примечание по таймаутам:

URLConnection поддерживает два тайм-аута: тайм-аут соединения и тайм-аут чтения По умолчанию время операций не истекает.

Возможно, что сервер, к которому вы подключаетесь, отключил ваш клиент.

0 голосов
/ 13 ноября 2014

Javadoc для connect() неверен. Ноль дает вам платформа время ожидания соединения, которое не бесконечно, а около минуты. Вы можете только уменьшить это значение с параметром timeout до connect(),, но не увеличить его.

0 голосов
/ 03 апреля 2012

Если getConnectTimeout и getReadTimeout от объекта возвращают ноль, то действительно означает бесконечность.Это унаследовано от базового URLConnection класса.

Возможно, вы получаете исключение , а не a SocketTimeoutException, вам следует убедиться в этом - возможнополучить IOException брошенный независимо от настроек тайм-аута.

...