2016-06-01 12 views
-1

サーバーからファイルを取得してJavaでダウンロードするHTTPリクエストがあります。問題は、ダウンロードするファイルが送信されるファイルより2バイト大きいことです。ダウンロードしたファイルのサイズが送信されているサイズより大きい

これは私が応答ファイルを作成する方法です。私は私がダウンロードした完全なファイルを持っているかどうかを確認するために、ヘッダーで送信されたファイルのサイズと比較してファイルサイズを使用し

InputStream input = connection.getInputStream(); 
    byte[] buffer = new byte[128]; 
    int n = - 1; 

    OutputStream output = new FileOutputStream(downloadsPath + formattedHeaders[0].toString()); 
    while ((n = input.read(buffer)) != -1) 
    { 
     output.write(buffer, 0, n); 
    } 
    input.close(); 
    output.close(); 

。サーバーのサイズは問題なく、正しいサイズを取得してヘッダーに追加しています。何とか私はファイルを書いているうちに余分な2バイトを取得します。

+1

この最後の2バイトをファイルから確認できますか?私は、それがHTTPマルチパートフォーマットまたはチャンクエンコードセパレータの区切り文字だと思います。 – Konrad

+1

また、ファイルに両方の(要求およびダウンロードされた)ファイルで異なるエンコーディングが施されている特殊文字があるかどうかを確認します。 – Habin

+0

送信時にファイルサイズが変わるため、ハッシュは問題になりません。 (私がハッシュを比較する前に)。 – user5581557

答えて

0

応答がファイルと一致しない理由は、送信される応答にも「OK」が連結されているためです。 ASCIIに変換された最後の2バイト[79、107]は "Ok"を表します。送信されないようにサーバー側でこの「OK」を削除すると、問題が修正されます。

関連する問題