2016-05-10 8 views
2

私はjava.net.URL.openStream()を使用してHTTPSリソースにアクセスしています。返されたストリームはいくつかのURLでは不完全です:下の例では、1,105,724バイトのファイルが生成されますが、ブラウザから同じURLにアクセスすると、5,755,858バイトのファイルが生成されます(Content-Encodingを無効にしても)。java.net.URL.openStream()ストリームが不完全です

そして例外をスローしません。

私には何が欠けていますか?

import static java.nio.file.Files.copy; 

import java.io.IOException; 
import java.io.InputStream; 
import java.net.URL; 
import java.nio.file.Paths; 

public class Test { 
    public static void main(String... args) throws IOException { 
    try (final InputStream in = new URL(
     "https://upload.wikimedia.org/wikipedia/commons/9/95/Germany_%28orthographic_projection%29.svg").openStream()) { 
     copy(in, Paths.get("germany.svg")); 
    } 
    } 
} 

編集

私は(異なるネットワーク上のが、常にJRE 1.8.0_60/MacのOS X 10.11.4に)このコードに多くの時間をテストしてみた、そして時にはそれが始まる」突然です作業"。

問題のある別のURL("https://upload.wikimedia.org/wikipedia/commons/c/ce/Andorra_in_Europe_%28zoomed%29.svg"など)に切り替えると、問題を再現することができます。

これはサーバーの問題であることを意味しますか?私はブラウザでそれを見たことがない。

+1

うーん、どのようにその5755858バイトのファイルを測定しましたか?手動でファイルをダウンロードしてそのサイズをチェックするときに得られるものではありません。 – Tunaki

+1

@俊明ナビゲータやカールから手動でダウンロードするとOPと同じサイズになります –

+0

私にとってはうまく動作します...安定したネットワークになっていますか? –

答えて

-2

正常です。

あなたのネットワークに問題があると示唆している人もいるので、別のネットワークに接続してみてください。

package test; 

import java.io.InputStream; 
import java.net.URL; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.StandardCopyOption; 

public class TestMain2 { 
    public static void main(String[] args) { 
     System.out.println("Started"); 

     try (final InputStream in = new URL(
       "https://upload.wikimedia.org/wikipedia/commons/9/95/Germany_%28orthographic_projection%29.svg") 
         .openStream()) { 

      Path outputFile = Paths.get("test.svg"); 

      Files.copy(in, outputFile, StandardCopyOption.REPLACE_EXISTING); 

      System.out.println("Output file size : " + outputFile.toFile().length()); 

      System.out.println("Finished"); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

出力

Started 
Output file size : 5755858 
Finished 
+0

それはネットワーク上の問題であれば、どのようにブラウザを通して動作するのか説明しますか? –

+1

正常に動作する場合は、再現性のないものとして閉じるよう投票してください。 "それは私のために働く"という答えは役に立たない。そして、あなたのネットワークには問題があるかもしれません。決定的なことではなく、単なる推測ではありません。 –

+0

@SotiriosDelimanolis、Julienはコピー用のコードを掲載していません。それは私が答えに含めたものです。問題もそこにある可能性があります。 – 11thdimension