J'ai un problème, que je ne semble pas pouvoir résoudre ... Je fais un téléchargement http d'un fichier, mais le CRC32 du fichier sur le serveur et sur le client ne correspond pas. En outre, le fichier a une taille différente, donc évidemment je dois faire quelque chose de mal ... quand je télécharge via Firefox, la taille du fichier est ok ... donc je suppose que c'est quelque part dans le code client.Java http corrompt le fichier
je l'ai déjà trouvé Corrupt file when using Java to download file, mais cela ne m'a pas aidé non plus ...
Voici le code:
private void downloadJar(String fileName, long crc32Server) throws IOException {
System.out.println("Downloading file '" + fileName + "' from server '" + mServer + "'.");
HttpURLConnection sourceConnection = null;
BufferedInputStream inputStream = null;
BufferedWriter fileWriter = null;
long crc32Client;
try {
URL sourceURL = new URL(fileName);
try {
sourceConnection = (HttpURLConnection)sourceURL.openConnection();
}
catch (MalformedURLException exc) {
throw new RuntimeException("Configured URL caused a MalformedURLException: ", exc);
}
sourceConnection.setRequestProperty("Accept-Encoding", "zip, jar");
sourceConnection.connect();
inputStream = new BufferedInputStream(sourceConnection.getInputStream());
fileWriter = new BufferedWriter(new FileWriter(targetFolder + File.separator + fileName));
CRC32 crc32 = new CRC32();
for (int singleByte = inputStream.read(); singleByte != -1; singleByte = inputStream.read()) {
fileWriter.write(singleByte);
crc32.update(singleByte);
}
crc32Client = crc32.getValue();
}
finally {
if (inputStream != null) {
inputStream.close();
}
if (fileWriter != null) {
fileWriter.flush();
fileWriter.close();
}
if (sourceConnection != null) {
sourceConnection.disconnect();
}
}
if (crc32Client != crc32Server) {
// deleteFile(fileName);
throw new IOException("CRC32 did not match for file '" + fileName + "': " + crc32Client + "!="
+ crc32Server);
}
}
Vous obtiendriez probablement plus de réponses si vous n'en faites pas un wiki communautaire. –