Установка максимального времени ожидания java.net.URLConnection

Я хочу загрузить pdf-файл, но исходный URL слишком медленный. Из-за этого я даю исключение тайм-аута соединения со следующим кодом.

    try {
            URL url = new URL(source);
            HttpURLConnection huc = (HttpURLConnection) 
            url.openConnection();
            huc.setConnectTimeout(0); //for unlimited
            huc.setReadTimeout(0);
            try (InputStream in = huc.getInputStream()) {
                Files.copy(in, Paths.get(destination), StandardCopyOption.REPLACE_EXISTING);
            }
        } catch (IOException e) {
            LOGGER.info("Error occured while copying file, %s", e);
            return false;
        }

Я попытался изменить значения setConnectTimeout и setReadTimeout как на 0, так и на 5 минут, преобразовав их в миллисекунды, но через ~ 130 секунд он выдает исключение тайм-аута соединения. Я не мог изменить это значение. После установленного тайм-аута чтения и соединения значения getConnectionTimeout и getReadTimeout возвращают значение my set.

Также я попробовал библиотеки apache для копирования входного потока в пункт назначения, но снова получил исключение тайм-аута соединения.

Я уже знал, что соединение дольше 15 секунд является ненормальным, но я хочу загрузить файл, сколько времени это займет.

Итак, как увеличить это значение тайм-аута?


person Adil Karaöz    schedule 04.11.2017    source источник
comment
Я уже знаю, что соединение дольше 15 секунд является ненормальным, но я хочу загрузить файл, сколько времени это займет. -- Значения времени ожидания соединения и чтения не имеют ничего общего с тем, сколько времени требуется для загрузки файла. . Тайм-аут соединения происходит до того, как соединение будет установлено, задолго до начала загрузки файла. Как только соединение установлено, значение времени ожидания соединения не имеет значения.   -  person Jim Garrison    schedule 04.11.2017
comment
Извините за недопонимание, сколько времени это занимает, означает общее время соединения и чтения.   -  person Adil Karaöz    schedule 10.11.2017


Ответы (1)


Вы не можете увеличить время ожидания соединения сверх значения по умолчанию для платформы (в отличие от 20 лет Javadoc), и в этом нет смысла. На время загрузки это никак не влияет. Единственным релевантным тайм-аутом для этого является тайм-аут чтения.

В любом случае, если «исходный URL-адрес слишком медленный», просто установка тайм-аутов не сделает его быстрее.

person user207421    schedule 04.11.2017