Bonjours,
Mon programme fonctionne de la manière suivante : mon application java fait appel à une page php qui crée un fichier zip à partir de plusieurs fichiers et le retourne. Mon application récupère alors ce fichier, l'enregistre mais lorsque je souhaite l'ouvrir dans mon code java avec un "new ZipFile("test.zip");", cela provoque une erreur alors que je peux ouvrir mon fichier en dehors de java sans souci.

(J'utilise la librairie HTTPClient...)

Voici le code de mon application java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.util.zip.*;
 
import java.io.*;
 
public class HTTPTest {
 
    private static String url = "http://128.1.2.11/test.php";
 
    public static void main(String[] args) {
	// Create an instance of HttpClient
	HttpClient client = new HttpClient();
 
	// Create a method instance.
	GetMethod method = new GetMethod(url);
 
	// Provide custom retry handler is necessary
	method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
		new DefaultHttpMethodRetryHandler(3, false));
 
	try {
	    // Execute the method.
	    int statusCode = client.executeMethod(method);
 
	    if (statusCode != HttpStatus.SC_OK) {
		System.err.println("Method failed: " + method.getStatusLine());
	    }
 
	    // Read the response body.
	    InputStream responseBody = method.getResponseBodyAsStream();
 
	    // Deal with the response.
	    FileOutputStream writenFile = new FileOutputStream("test.zip");
	    byte [] test = new byte[1024];
	    while (responseBody.read(test) > 0) {
		writenFile.write(test);
	    }
 
	    ZipFile zipfile = new ZipFile("test.zip");
 
	} catch (HttpException e) {
	    System.err.println("Fatal protocol violation: " + e.getMessage());
	    e.printStackTrace();
	} catch (IOException e) {
	    System.err.println("Fatal transport error: " + e.getMessage());
	    e.printStackTrace();
	} finally {
	    // Release the connection.
	    method.releaseConnection();
	}  
    }
}
Mon fichier test.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
    // appel de la classe
    require_once('zip.lib.php');
    // nom des fichiers à ajouter dans l'archive
    $filename = 'test.sql';
    $filename2 = 'test.txt';
 
    // contenu du fichier
    $fp = fopen ($filename, 'r');
    $content = fread($fp, filesize($filename));
    fclose ($fp);
 
    // contenu du fichier
    $fp2 = fopen ($filename2, 'r');
    $content2 = fread($fp2, filesize($filename2));
    fclose ($fp2);
 
    // création d'un objet 'zipfile'
    $zip = new zipfile();
    // ajout des fichiers dans cet objet
    $zip->addfile($content, $filename);
    $zip->addfile($content2, $filename2);
    // production de l'archive' Zip
    $archive = $zip->file();
 
    // entêtes HTTP
    header('Content-Type: application/x-zip');
    // force le téléchargement
    header('Content-Disposition: inline; filename=archive.zip');
 
    // envoi du fichier au navigateur
    echo $archive;
?>
Et mon erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Fatal transport error: error in opening zip file
java.util.zip.ZipException: error in opening zip file
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(Unknown Source)
	at java.util.zip.ZipFile.<init>(Unknown Source)
	at test.HTTPTest.main(HTTPTest.java:43)
Quelqu'un saurait-il résoudre mon problème ?