Сеть закрывает соединение до того, как клиент по тем или иным причинам получит все данные.
Частью любого HTTP-запроса является длина содержимого. Ваш код получает заголовок, в котором говорится: «Эй, приятель, вот данные, и это их большая часть ...», а затем соединение обрывается, прежде чем клиент прочитает все данные. .. так что его взрыв за исключением.
Я бы посмотрел ваши настройки времени ожидания соединения OS / NETWORK / JVM (хотя JVM обычно наследуется от ОС в этой ситуации). Ключ должен выяснить, какая часть сети вызывает проблему. Это настройки вашего компьютера говорят, нет, не собираюсь больше ждать пакетов ... это то, что вы используете неблокирующее чтение, которое имеет настройку тайм-аута в вашем коде, где оно говорит, эй, не получил любые данные с сервера дольше, чем я должен ждать, поэтому я собираюсь сбросить соединение и исключение. и т. д. и т. д.
Лучше всего сделать так, чтобы низкий уровень отслеживал трафик пакетов и отслеживал их в обратном направлении, чтобы увидеть, где происходит сбой соединения, или посмотреть, можете ли вы увеличить тайм-ауты в вещах, которыми вы можете управлять, таких как ваше программное обеспечение и OS / JVM.