Problème de récupération d'un fichier Excel avec HttpClient

Résolu
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 - 10 oct. 2006 à 19:27
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 - 11 oct. 2006 à 17:17
Bonjour,

J'essaie de récupérer un fichier excel en utilisant l'api HttpClient. Seulement, lorsque je récupère le fichier, celui-ci a des caractères qui ne correspondent pas à l'original, si bien qu'Excel me dit que le fichier est endommagé et n'affiche pas correctement le fichier.
Certains caractères sont remplacés par des '?' lorsque je récpère le fichier.
Voici le code :

        HttpClient client = new HttpClient();

        String login = "login";

        String password = "password";

        client.getState().setCredentials(new AuthScope("www.toto.com", 443, "realm"),

            new UsernamePasswordCredentials(login, password)

        );


        GetMethod get = new GetMethod("https://www.toto.com/docs/Fiche%20Technique.xls");


        get.setDoAuthentication( true );


        try {

            // execute the GET

            int status = client.executeMethod( get );

            // print the status and response

            log.debug("status = " + status);

           

            File excelFile = new File("resources/test.xls");

            FileOutputStream fos = new FileOutputStream(excelFile);

            // Originale file

            byte[] bytes = get.getResponseBodyAsString().getBytes();

            for (int i = 0; i < bytes.length; i++)

                fos.write(bytes[i]);

            fos.close();


        } catch(IOException exc) {

            System.out.println("Error IOException = " + exc.getMessage());

        }

        finally {

            // release any connection resources used by the method

            get.releaseConnection();

        }

Quelqu'un aurait il une idée pour éviter ce problème.
Sinon existe-t-il d'autres API qui permettent de récupérer un fichier en utilisant une authentification
Merci d'avance
[:D]

2 réponses

shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 22
11 oct. 2006 à 13:28
Premièrement, il faut vérifier que le serveur HTTP te transmet bien le fichier en binaire.
soit un fichier XL direcetement posé sur le serveur
soit une servlet avec le type mime Excle/Application et un  écritre binaire sur le flux response.

Pour le client,
utilise plutot get.getResponseBody() ou get.getResponseBodyAsStream() si tu dois traiter des fichiers importants.
3
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
11 oct. 2006 à 17:17
Merci pour ta réponse.
J'ai utilisé get.getResponseBody() et ça fonctionne parfaitment!

[:D]
0
Rejoignez-nous