2017-11-04 413 views
0

我想下载pdf文件,但源网址太慢。因此,我正在给连接超时例外以下代码。设置java.net.URLConnection的最大超时时间

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; 
     } 

我试图通过转换为毫秒但〜130秒之后改变setConnectTimeout和setReadTimeout值0和5分钟,它抛出连接超时异常。我无法改变这个值。设置读取和连接超时之后,getConnectionTimeout和getReadTimeout值返回值,我的集合。

另外我试图将apache库复制到目标输入流,但我又收到连接超时异常。

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

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

+2

_“我已经知道,连接超过15秒大是不正常的,但我想下载文件时,它需要多长时间。” _ - 的连接和读取超时值无关与文件需要多长时间下载。连接超时发生在连接建立之前,远远早于文件开始下载。连接建立后,连接超时值没有意义。 –

+0

抱歉误解,“需要多长时间”是指连接和阅读的总时间。 –

回答

1

您不能增加的连接超时超越平台默认的(与20年的Javadoc),并且在这样做没有意义的。它对下载时间没有影响。唯一的相关超时是读取超时。

在任何情况下,如果“源URL太慢”,仅仅设置超时不会使任何更快。