IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Java, Cookies et Linux


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Java, Cookies et Linux
    Hello,

    J'ai créer une application en J2SE permettant de réaliser divers traitement via le WEB. Parmi ces traitements, il y en a un qui consiste à récupérer les cookies d'un site. Suite à un problème à ce niveau, j'ai réaliser un petit prototype afin de comprendre le problème qui est le suivant :

    J'arrive parfaitement a récupérer des cookies après une connexion, que se soit en GET ou en POST, sur les plateforme Windows XP et sur Mac OSX (tout deux en 32bits). Cependant, impossible de récupérer des cookies sur une plateforme Linux (Ubuntu 10.10) ! Il arrive par fois d'en récupérer 1, mais jamais tous les cookies..

    Voici le code de mon prototype (je n'ai laisser que la version GET):

    Class principale :
    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
     
    import java.net.CookieManager;
    import java.net.HttpCookie;
    import java.net.URI;
    import java.util.List;
     
    public class Main {
     
        public static void main(String[] args) {
            try {
                ConnectionFactory cf = new ConnectionFactory();
                String address = "http://www.google.com";
     
                //etablissement de la connexion
                cf.connectionGet(address);
                //récupération de la réponse du serveur, avec les cookies...
                String res = cf.getResponseString();
                //récupération du gestionnaire de cookie
                CookieManager ch = (CookieManager)cf.getCookieHandler();
                List<HttpCookie> lst = ch.getCookieStore().get(new URI(address));
                //affichage des cookies récupérés
                for (int i = 0; i < lst.size(); i++){
                    System.out.println(lst.get(i).toString());
                }
                cf.disconnect();
            } catch (Exception e){
                //s'il y a eu une erreur lors de la tentative de connexion...
                System.out.println("Exception");
            }
        }
     
    }
    Class de connexion (épurée pour ne pas vous donner trop de code inutile pour ce test) :
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.CookieHandler;
    import java.net.CookieManager;
    import java.net.CookiePolicy;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.ProtocolException;
    import java.net.URL;
     
    public class ConnectionFactory {
     
        private URL url;
        private HttpURLConnection conn;
        private InputStream input;
        private String responseStr;
        private CookieManager cm = new CookieManager();
     
     
        public ConnectionFactory() throws MalformedURLException, IOException{
            cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(cm);
        }
     
        /**
         * Retourne l'URL actuellement utilisé
         * @return L'url actuellement utilisé par la connexion
         */
        public URL getUrl(){
            return this.url;
        }
     
        /**
         * Retourne la connexion courante
         * @return La connexion courante
         */
        public HttpURLConnection getConnection(){
            return conn;
        }
     
        /**
         * Retourne le flue retourné par la connexion
         * @return
         */
        public InputStream getInput (){
            return input;
        }
     
        public CookieHandler getCookieHandler(){
            return cm;
        }
     
        /**
         * Crée et lance la connexion avec la méthode GET. Garantie pour HTTP
         * @param address   Adresse internet (ex : "http://www.google.com").
         * @param lstParams La liste des paramètres du GET
         * @param lstValues Les valeurs de chaque paramètre du GET, dans le même ordre que lstParams.
         * @throws ProtocolException    Si le protocole n'est pas pris en charge (ex FTP, HTTPS,...).
         * @throws UnsupportedEncodingException Type de réponse non supportée
         * @throws IOException  Problème de connexion.
         */
        public void connectionGet(String address) throws ProtocolException, UnsupportedEncodingException, IOException{
            responseStr = null;
            //ajout des paramètres dans l'url
            url = new URL(address);
            conn = (HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");
            conn.setDoOutput(true);
            conn.setInstanceFollowRedirects(true);
     
            //récupération de la réponse
            input = conn.getInputStream();
            //return getResponseString();
        }
     
        /**
         * Retourne la réponse de la connexion au format String.
         * @return  la réponse de la connexion (Ex. contenu html de la page web retournée).
         * @throws IOException Problème de connexion.
         */
        public String getResponseString() throws IOException{
            if (responseStr == null) {
                StringBuilder response = new StringBuilder();
                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    //formatage de la réponse
                String ligne;
                while ((ligne = reader.readLine()) != null) {
                    ligne+="\r\n"; response.append(ligne);
                }
                responseStr = response.toString();
                reader.close();
            }
            return responseStr;
        }
     
        /**
         * Force la déconnexion courante.
         */
        public void disconnect(){
            conn.disconnect();
        }    
    }
    Ma question est la suivante : Pourquoi ce code fonctionne parfaitement sur Windows et Machintosh, mais pas sur Linux ? Auriez-vous une suggestion à me faire ? Est-ce un problème au niveau de la JVM Linux (et alors, où informer de ce bug pour ainsi espérer un correctif) ?

    Merci beaucoup pour votre temps, j'attend vos réponses avec impatience.

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut
    Personne pour répondre à cette question ?? :-(

Discussions similaires

  1. Exportation scripts perl/java et compatiblilités Linux
    Par SebastienM dans le forum Développement de jobs
    Réponses: 76
    Dernier message: 05/03/2008, 01h46
  2. modifier java/javac -version linux
    Par fantomas261 dans le forum Langage
    Réponses: 2
    Dernier message: 11/11/2007, 00h00
  3. java windows et linux
    Par andromeda dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 03/10/2007, 09h06
  4. thread java et process linux
    Par blured dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 27/06/2007, 14h58
  5. Java, cookie et checkbox
    Par Tee shot dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/04/2007, 21h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo