2017-11-04 30 views
0

pdfファイルをダウンロードしたいが、ソースurlが遅すぎる。このため、次のコードで接続タイムアウト例外を指定しています。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; 
     } 

私はsetConnectTimeoutを変更しようとsetReadTimeoutはミリ秒に変換することにより、両方の0と5分の値が、〜130秒後に、それが接続タイムアウト例外がスローされます。私はこの値を変更できませんでした。読み込みと接続のタイムアウトが設定された後、getConnectionTimeoutとgetReadTimeoutの値が返されます。

また、入力ストリームを宛先にコピーするためにapacheライブラリを試しましたが、再び接続タイムアウト例外が発生しました。

私はすでに知っていますが、15秒を超える接続は異常ですが、ファイルのダウンロードにはどれくらい時間がかかるのですか。

このタイムアウト値を増やすにはどうすればよいですか?

+2

_「15秒を超える接続に異常がありますが、ファイルのダウンロードに時間がかかります」_ _接続のタイムアウト値と読み取りタイムアウト値は、ファイルのダウンロード時間。接続タイムアウトは、ファイルがダウンロードされるずっと前に接続が確立される前に発生します。接続が確立されると、接続タイムアウト値は意味を持ちません。 –

+0

誤解をおかけして申し訳ありませんが、「どのくらいの時間がかかりますか」とは、接続と読み取りの合計時間を意味します。 –

答えて

1

プラットフォームのデフォルト(Javadocの20年とは異なります)を超えて接続タイムアウトを増やすことはできません。ダウンロード時間に影響しません。そのための唯一の関連タイムアウトは、読み取りタイムアウトです。

いずれの場合でも、「ソースURLが低すぎる」場合は、タイムアウトを設定するだけではそれ以上の時間がかかりません。

関連する問題