2017-11-04 784 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太慢」,僅僅設置超時不會使任何更快。