设置 java.net.URLConnection 的最大超时

Setting maximum timeout of 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的值return值,我的设置。

我也尝试过 apache 库将输入流复制到目的地,但我再次收到连接超时异常。

我已经知道,超过15秒的连接是不正常的,但我想下载文件需要多长时间。

那么,如何增加这个超时值呢?

您不能将连接超时增加到超过平台默认值(与 20 年的 Javadoc 相反),这样做没有意义。它与下载时间无关。唯一相关的超时是读取超时。

无论如何,如果'source URL is too slow',仅设置超时不会使其更快。