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

Langage Java Discussion :

Connexion en POST et Cookie


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut Connexion en POST et Cookie
    Bonjour,

    Beaucoup d'informations sont dans le titre ^^
    Je vais essayer d'aller droit au problème, je développe actuellement une application personnelle en java Graphique.
    Je sais, ici je suis dans la partie générale ^^ mais mon problème n'est pas sur des éléments graphiques, donc je pense, et j'espère être dans la bonne partie ^^

    Donc, pour en venir au problème, j'aimerai pouvoir envoyer en POST à un site 3 arguments, puis en même temps récupérer les cookies générés lors de cette connexion...de façon ensuite à pouvoir réutiliser ces cookies ^^' (logique hein !? xD)

    Bref, c'est formidable, j'ai cherché, j'ai trouvé des choses, mais le problème c'est que j'ai trouvé 2 morceaux de codes qui marche séparemment, mais les cookie récupéré ne sont pas ceux de la 1ere connexions, donc ça marche pas...

    En fait, l'un utilise une URLConnection (la 1ere juste pour envoyer en POST) et l'autre une HttpURLConnection (pour la récupération des mails)...

    J'ai pas réussi à mélanger les 2, ni à en faire une de moi-même...donc si quelqu'un pourrait m'aider, je demande un truc simple (enfin si ça l'est )

    En clair, je souhaiterai pouvoir :
    - Ouvrir une connexion en POST
    - Envoyer 3 paramètres via POST
    - Récupérer les cookies générés lors de cette connexion
    - fermer la connexion

    Pour la vérification que j'envoie les bon paramètres je verrai plus tard ^^'

    Je vous remercie d'avance !!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    J'ai pas trop bien compris tes histoires de connexions en POST ou de générer des cookies avec des connexions...

    Mais à mon avis, tu te simplifierais la vie en utilisant la bibliothèque httpclient de jakarta-commons plutôt qu'en faisant directemetn à coups de URLConnection et HttpURLConnection.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Par défaut
    Je pense que thelvin à raison, il n'y a pas de possibilité dans javase de gérer les cookies simplement, il faut les extraire à la main ce qui est pénible. Si tu tient tous de même à le faire comme ça ( ce que je te déconseille ) :

    http://www.java2s.com/Code/Java/JDK-6/UsingCookieHandlerinJava5.htm

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    D'accord...bah j'en ai besoin de ces cookies...donc j'ai pas trop le choix...

    Je vais voir du côté de HttpClient à la rigueur...mais j'en ai vraiment besoin de ces cookies...

    Bon je regarde et je vous dis où j'en suis, après si j'y arrive je post le code normal

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Citation Envoyé par Yopii Voir le message
    Je vais voir du côté de HttpClient à la rigueur...mais j'en ai vraiment besoin de ces cookies...
    Quoi, "à la rigueur" ? Le principe même de HttpClient est d'implémenter le standard de communication HTTP de façon simple, ce qui inclut notamment... Les cookies, et voui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Okok, bah j'suis dedans ^^' j'disais à la rigueur si j'y arrive xD !!

    J'vais étudier tous ça de plus près j'suis en vacances depuis vendredi donc ça va me donner du temps ^^

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Bon, j'ai regarder et depuis ce matin je cherche mais je ne trouve pas de solutions...

    J'ai une erreur qui se fait et je ne la comprend pas vraiment...donc j'ai cherché sur let net, et j'ai trouvé qu'il fallait ajouter des .jar externe en plus...les commons-logging-xxx.jar de LogFactory...
    j'ai donc fais ça...mais un nouveau ou des nouveaux problèmes sont apparus...

    Voici mon code :

    Ceci est un listener qui prend mes identifiants entré dans les JTextField puis les envois dans la méthode 'Connect()' qui elle est chargé d'éxécuter de procéder à la connexion et du POST !!
    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
     
     
    class UserListener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
     
    			login.setEnabled(false);
    			mdp.setEnabled(false);
     
                            String sLogin = login.getText();
    		        String sMdp = mdp.getText();	
     
    			try {
    				Connect(sLogin, sMdp);
    			} catch (Exception e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
     
    			repaint();
    		}
    	}
    Et là voici la méthode 'Connect()' qui procéde à la connexion et à l'envoi du POST, qui je l'aimerai bien permettrai de m'identifier au site. Ensuite je pourrai effectuer les même actions que si j'étais connecter par Firefox :

    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
     
     
    public void Connect(String psd, String mdp) throws Exception, URISyntaxException, ClientProtocolException, IOException{
    		URI uri = new URI(adress);
     
    		DefaultHttpClient httpclient = new DefaultHttpClient();
     
    		HttpPost httpost = new HttpPost(uri);
     
     
    		HttpResponse response = httpclient.execute(httpost);
            HttpEntity entity = response.getEntity();
     
            ArrayList <BasicNameValuePair> nvps = new ArrayList <BasicNameValuePair>();
            nvps.add(new BasicNameValuePair("psd", psd));
            nvps.add(new BasicNameValuePair("mdp", mdp));
     
            httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
     
            response = httpclient.execute(httpost);
            entity = response.getEntity();
     
            System.out.println("Login form get: " + response.getStatusLine());
            if (entity != null) {
                entity.consumeContent();
            }
     
            System.out.println("Post logon cookies:");
            ArrayList<Cookie> cookies = (ArrayList<Cookie>) httpclient.getCookieStore().getCookies();
            if (cookies.isEmpty()) {
                System.out.println("None");
            } else {
                for (int i = 0; i < cookies.size(); i++) {
                    System.out.println("- " + cookies.get(i).toString());
                }
            }
     
            httpclient.getConnectionManager().shutdown();
     
    	}


    ...puis voici les magnifiques erreurs que j'obtiens, qui sont essentielles à la résolution de mon problème ^^'


    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
     
     
    java.lang.IllegalStateException: Invalid use of SingleClientConnManager: connection still allocated.
    Make sure to release the connection before allocating another one.
    	at org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:199)
    	at org.apache.http.impl.conn.SingleClientConnManager$1.getConnection(SingleClientConnManager.java:173)
    	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:390)
    	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    	at Fenetre.Connect(Fenetre.java:115)
    	at Fenetre$UserListener.actionPerformed(Fenetre.java:152)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Pour rappel, j'ai ajouté les .jar de :
    - httpClient
    - httpCore
    - commons-logging-xxx

    Voili voilou...si quelqu'un à la gentillesse de m'aider...je le ou les remercie d'avance !!

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Houlà, euh, prends plutôt la version 3.0.1 de httpclient (celle de jakarta-commons, donc.) Je la trouve plus facile d'emploi, et elle n'a pas la dépendance httpcore.

    Pour faire un POST, on crée simplement une PostMethod et on y ajoute simplement ses paramètres, sans difficulté.
    Et sa gestion des connexions est simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Ah wè ok ^^ mdrr !!

    Bon bah je vais voir sa alors !! Merci du conseil, parce que là on me disait que c'était simple mais à vrai dire j'commençais à me dire que j'étais un peu stupide en trouvant ça "compliqué" ^^'

Discussions similaires

  1. [Batch] connexion automatique poste client
    Par rico3434 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 14/12/2012, 16h19
  2. Connexion via Facebook et cookie
    Par mickael44 dans le forum Facebook
    Réponses: 1
    Dernier message: 19/12/2011, 11h14
  3. le duo POST et Cookie
    Par star-watcher dans le forum Web
    Réponses: 0
    Dernier message: 15/07/2009, 14h06
  4. Requete HTTP Post et Cookies
    Par Ptitkarl dans le forum Langage
    Réponses: 17
    Dernier message: 24/04/2008, 16h31
  5. Fenêtre lors de la connexion à un poste distant
    Par Jiraiya42 dans le forum Windows XP
    Réponses: 4
    Dernier message: 06/07/2006, 11h15

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