Какова максимальная задержка получения ответа http?

Я отправляю запрос по http. Тайм-аут соединения и тайм-аут чтения установлены на 30000 мс. Какое максимальное время, по истечении которого я получу ответ? Это комбинированное чтение + таймауты соединения? Я сомневаюсь, когда начинается тайм-аут чтения, после установления соединения или с того момента, когда мы начинаем пытаться установить соединение? Будет ли соединение разорвано по истечении заданного времени ожидания соединения, даже если соединение установлено?

Разница между двумя тайм-аутами очевидна, но мне не ясно, когда именно они принимаются во внимание.

con.setConnectTimeout(30000); 
con.setReadTimeout(30000);

person Darshan Gopal R    schedule 25.10.2016    source источник
comment
@DimaSan В другом вопросе не упоминается, когда именно оба таймаута появляются. Это объясняет разницу между двумя тайм-аутами.   -  person Darshan Gopal R    schedule 25.10.2016


Ответы (1)


connectTimeout ограничивает время, которое может занять установление соединения, а readConnectionTimeout указывает, сколько времени вы можете ждать между пакетами данных (последовательными чтениями) после установления соединения.

Итак, сначала вы пытаетесь установить соединение и ограничиваете этот процесс connectTimeout. После установления соединения вы читаете входящие данные с помощью readConnectionTimeout.

Второй, не ограничивает общее время операции чтения данных. Общее время чтения не может превышать packets_to_be_send * readConnectionTimeout

person Antoniossss    schedule 25.10.2016
comment
Если 'connectTimeout' больше, чем 'packets_to_be_send * readConnectionTimeout'. Появится ли тайм-аут соединения после того, как соединение будет установлено? - person Darshan Gopal R; 26.10.2016
comment
Это не имеет значения, поскольку эти таймауты являются взаимоисключающими - сначала вы пытаетесь установить соединение (TCP controll) - здесь connectionTimeout занимает место. После установления соединения считываются фактические данные приложения - здесь появляется readConnectionsTimeout. Поскольку соединение уже установлено, connectTimeout больше не имеет значения. - person Antoniossss; 26.10.2016
comment
@DarshanGopalR Вы указали проблему здесь, в (отредактированном) комментарии - нет, после установления соединения connectionTimeout больше не принимается во внимание. - person Antoniossss; 26.10.2016
comment
Спасибо за пояснение - person Darshan Gopal R; 01.12.2016