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 :

Gestion des cookies = pétage de plombs [FAQ]


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 110
    Points
    110
    Par défaut Gestion des cookies = pétage de plombs
    Salut tout le monde,

    je suis en train de voiloir faire un petit programme en java (je sais même pas si je suis dans la bonne section, mea culpa si ce n'est pas le cas), qui essaie de s'authentifier sur un serveur ayant les caractéristiques suivantes:

    • Il faut faire une connexion https
    • le serveur demande un login et un mdp
    • il envoie un cookie (de type secure)
    • on est obligé d'utiliser le cookie pour continuer a accéder aux services.


    Pour le moment, le corps de ma méthode fait quelque chose comme ça:
    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
     
              try {
     
                   URL u = new URL(MYURL);    
                   // open the connection and prepare it to POST
                   URLConnection uc = u.openConnection( );
                   uc.setDoOutput(true);
     
                   OutputStream raw = uc.getOutputStream( );
                   OutputStream buffered = new BufferedOutputStream(raw);
                   OutputStreamWriter out = new OutputStreamWriter(buffered, "8859_1
    ");
                   out.write("?isiwebuserid="+userid+"&isiwebpasswd="+userpasswd+"r\n");
                   InputStreamReader r = new InputStreamReader(uc.getInputStream( ))
    ;
                   int c;
                   while((c = r.read( )) != -1) {
                        System.out.print((char) c);
                   }
                   out.flush( );
                   out.close( );
     
              }
              catch (IOException ex) {
                   System.err.println(ex);
              }
    En gros, ça ne fait que d'envoyer un POST sur la page et me recracher la réponse... comme le cookie n'a pas été importé, la réponse est la même .

    Voilà quelques informations sur le serveur (response header):


    Pragma: no-cache
    Set-Cookie:Navajo=AVmCibRdmte7Ziw0ibRRLIMeXhFMYMu+jdSecE5Ipso/P/ZUE8tc5S1nrk7iHSYDWaairsfy6WQ-; path=/; secure
    Connection: close
    Location: XXX
    Cache-Control: no-cache
    Content-Length: 299
    Content-Type: text/html

    Il faut donc que je mémorise le cookie, mais surtout que quand je fais un POST je l'utilise à nouveau et c'est vraiment là que je ne sais pas coment faire !
    J'ai cru comprendre que javax.servlet simplifiait quelque peu l'utilisation des cookies, mais j'ai eu l'impression que servlet est plutôt utilisé côté serveur.

    Je vous remercie pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    URLConnection ne gère pas les Cookies...
    Donc en fait à chaque fois que tu contactes le sites le cookie n'est pas envoyé, ce qui fait que le serveur considère que tu n'est pas connecté...

    Il faut renvoyer le(s) Cookie(s) à chaque connection, soit manuellement juste après la création du URLConnection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	URLConnection uc = u.openConnection( );
    	uc.addRequestProperty("Cookie", "Navajo=AVmCibRdmte7Ziw0ibRRLIMeXhFMYMu+jdSecE5Ipso/P/ZUE8tc5S1nrk7iHSYDWaairsfy6WQ-;");
    (ce qui peut être un peu contraignant en cas de multiple cookies)



    Soit, a partir de Java 5.0 en définissant un CookieHandler qui se chargera de stocker et renvoyer tous ces cookies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CookieHandler.setDefault( tonCookieHandlerInstance );
    Le problème c'est que Java 5.0 ne propose aucune implémentation de CookieHandler, et qu'il faudra donc l'implémenter toi même...

    En effet seul Java 6 propose une implémentation de base avec CookieManager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CookieHandler.setDefault( new CookieManager() );
    a++

    PS : attention car dans ton code tu ne fermes par les flux (lire : Comment libérer proprement les ressources ?)

  3. #3
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Hello,

    Je pense que tu devrais regarder ca HttpClient du projet Djakarta, c super costaud et ca devrait repondre a tous tes problemes, dans mon cas, assez similaire au tien ca a super bien fonctionné
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 110
    Points
    110
    Par défaut
    Merci pour vos réponses.
    @adiguba: est-ce qu'il ne faut pas préciser le PATH du cookie et le fait qu'il soit "secure" ?

    @wace: merci pour le tuyau... j'ai regardé un peu, mais sincèrement, j'ai rien compris au site web (wiki pourrave, peu d'exemples... :S).

    Encore merci

    EDIT: pour httpclient, j'ai compris

  5. #5
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Citation Envoyé par bulki
    pour httpclient, j'ai compris
    Si t'as des questions n'hesite pas a en poser,

    L'utilisation de HttpClient est tres tres intuitive et tu ne trouveras pas mieux pour gerer des connexions http(s) en Java
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 110
    Points
    110
    Par défaut
    Merci bcp.
    Ca commence superbement bien, j'ai un

    $ javac PetitProg.java
    PetitProg.java:4: package HTTPClient does not exist
    import HTTPClient.*;
    J'ai pourtant installé toutes les dépendances...

  7. #7
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Mais si j'etais toi j'utiliserai un IDE pour developper c'est ce passer des fonctionalités primordiales et des facilités qu'ils apportent comme la gestion des erreurs d'importation
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par wace
    Mais si j'etais toi j'utiliserai un IDE pour developper c'est ce passer des fonctionalités primordiales et des facilités qu'ils apportent comme la gestion des erreurs d'importation
    justement, c'est le import HttpClient.* qui me foire...

    Je déteste les IDEs , c'est lourd, y'a presque pas de raccourcis claviers (ça vaut pas un VIM )... Bon, je vais chercher mon erreur. merci

    EDIT: j'ai installé ECLIPSE finalement, mais c'est le même problème... raaaaaaaaaaaaaaaaa

    EDIT2: c'était affreux. J'ai dû importer au moins tous les common-*/lib/\\w+.jar (pour faire dans le regexp ) avant de pouvoir commencer à exécuter mon programme (sous eclipse). J'ose même pas imaginer le carnage en ligne de commandes (à moins de tout copier dnas le même dossier éventuellement). Raaaaa, les spécialités java

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    HttpClient est le nom de la classe, pas du package...

    Regarde bien la doc de la librairie

    a++

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour!

    J'ai le même problème que bulki et je voudrais savoir s'il y a eu des news à ce sujet depuis (et eventuellement des exemples svp ). J'ai du mal à me logger sur un site et y consulter des pages à partir de l'appli.

    merki

Discussions similaires

  1. vérifier la gestion des cookies
    Par rinuom99 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/03/2010, 15h06
  2. [JMeter] Gestion des cookies + sessions
    Par benratti dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 15/10/2007, 11h36
  3. gestion des cookies
    Par boss_gama dans le forum ASP
    Réponses: 1
    Dernier message: 20/07/2006, 08h39
  4. Gestion des cookies
    Par The_Lynx dans le forum Web & réseau
    Réponses: 1
    Dernier message: 03/11/2005, 11h38
  5. Gestion des cookies avec Indy 10
    Par membrax dans le forum Web & réseau
    Réponses: 5
    Dernier message: 21/09/2005, 18h44

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