Connexion sur un site avec Java

Connexion sur un site avec Java - Java - Programmation

Marsh Posté le 03-02-2010 à 12:01:58    

Bonjour tout le monde.
j'essaye de me connecter sur un site internet via un programme Java, grâce à la librairie HttpClient d'apache.
 
Donc, j'arrive sans problème à récupérer le code de la page HTML afin de voir les attributs "name" du formulaire.
le soucis étant que je n'arrive pas à me connecter à mon compte sur le site.
les formulaire sont en méthode POST.
 
voila comment je procède pour essayer de me logguer :
 

Code :
  1. HttpClient client = new HttpClient();
  2.         
  3.         
  4.         PostMethod method = new PostMethod("http://www.xxxx.com/app/user" );
  5.         
  6.         method.addParameter("email", "xxxxxx@gmail.com" );
  7.         method.addParameter("password", "xxxxxxx" );
  8.         
  9.         try {
  10.               // Execute the method.
  11.               int statusCode = client.executeMethod(method);
  12.  
  13.               if (statusCode != HttpStatus.SC_OK) {
  14.                 System.err.println("Method failed: " + method.getStatusLine());
  15.               }
  16.  
  17.               // Read the response body.
  18.               byte[] responseBody = method.getResponseBody();
  19.  
  20.               // Deal with the response.
  21.               // Use caution: ensure correct character encoding and is not binary data
  22.               System.out.println(new String(responseBody));
  23.  
  24.             } catch (HttpException e) {
  25.               System.err.println("Fatal protocol violation: " + e.getMessage());
  26.               e.printStackTrace();
  27.             } catch (IOException e) {
  28.               System.err.println("Fatal transport error: " + e.getMessage());
  29.               e.printStackTrace();
  30.             } finally {
  31.               // Release the connection.
  32.               method.releaseConnection();
  33.             }


comment puis-je m'y prendre?

Reply

Marsh Posté le 03-02-2010 à 12:01:58   

Reply

Marsh Posté le 03-02-2010 à 13:26:28    

"le soucis étant que je n'arrive pas à me connecter à mon compte sur le site. "
 
Et tu as un message d'erreur?

Reply

Marsh Posté le 03-02-2010 à 13:40:09    

non, même pas...on retourne sur la page d'accueil...mais sans erreur.
 
en fait, au départ, le but était de récupérer le code HTML de la page en l'affichant dans la console (j'utilise eclipse).
le code de la page s'affiche correctement, donc j'ai repérer le formulaire <form> </form> pour trouver les "name" afin de faire passer mes logs en paramètres...
 
mais le résultat...pas d'erreur, et je récupère le code de la page d'accueil...le même que précédemment :s

Reply

Marsh Posté le 03-02-2010 à 14:25:56    

Gestion de session coté serveur peut-être?

Reply

Marsh Posté le 03-02-2010 à 14:32:04    

Que veux tu dire par la?
 
je  souhaiterais arriver à pouvoir me loguer et a accéder à mon compte via mon appli java...mais je n'y arrive toujours pas!!!

Reply

Marsh Posté le 03-02-2010 à 14:32:05    

oups..double post...


Message édité par kheops31 le 03-02-2010 à 14:32:51
Reply

Marsh Posté le 03-02-2010 à 18:16:45    

Ne serait-ce que pour éviter justement qu'un "Robot" tente de multiple tentative de connexion en testant des mots de passe, il se peut que le serveur gère un id de session utilisateur que tu devrais lui renvoyer lors de ton authentification.
Effectue un GET sur la page du formulaire d'authentification et regarde tout ce que le serveur te renvoie.

Reply

Marsh Posté le 04-02-2010 à 14:22:28    

oups...encore double post...bizarre ça !!!


Message édité par kheops31 le 04-02-2010 à 14:23:22
Reply

Marsh Posté le 04-02-2010 à 14:22:29    

C'est bon j'ai réussi à me connecter
 
En fait le problème était dans la methode Post (que j'ai changé en méthode GET) pour effectuer la redirection : j'avais oublié de remettre le User-Agent donc ça ne marchais pas
 
Voici le code final :  
 

Code :
  1. // Create an instance of HttpClient.
  2.  HttpClient client = new HttpClient();
  3.  // utilisation du user-agent de firefox
  4.  Header header = new Header("User-Agent", "Mozilla/5.0" );
  5.  PostMethod method = new PostMethod("https://www.xing.com/app/user" );
  6.  method.setRequestHeader(header);
  7.  method.addParameter("login_user_name", "xxxxxx@gmail.com" );
  8.  method.addParameter("login_password", "xxxxxxx" );
  9.  method.addParameter("op", "login" );
  10.  method.addParameter("dest", "/app/startpage?op=home;from_login=1" );
  11.  method.addParameter("perm", "true" );
  12.    
  13.  try {
  14.   // Execute the method.     
  15.   int statusCode = client.executeMethod(method);
  16.   if (statusCode != HttpStatus.SC_OK) {
  17.    System.err.println("Method failed: " + method.getStatusLine());
  18.    // si il y a une redirection on l'utilise
  19.    while (statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
  20.     String redirectLocation = "";
  21.     //on récupère l'url de la redirection
  22.     Header locationHeader = method.getResponseHeader("location" );
  23.     if (locationHeader != null) {
  24.      redirectLocation = locationHeader.getValue();
  25.     }
  26.     System.out.println(redirectLocation);
  27.     method = new PostMethod(redirectLocation);
  28.     method.setRequestHeader(header);
  29.     statusCode = client.executeMethod(method);
  30.    }
  31.   }
  32.   System.out.println("-------------------------------------------------------------" );
  33.   // Read the response body.
  34.   byte[] responseBody = method.getResponseBody();
  35.   // Deal with the response.
  36.   // Use caution: ensure correct character encoding and is not binary
  37.   // data
  38.   System.out.println(new String(responseBody));
  39.  } catch (HttpException e) {
  40.   System.err.println("Fatal protocol violation: " + e.getMessage());
  41.   e.printStackTrace();
  42.  } catch (IOException e) {
  43.   System.err.println("Fatal transport error: " + e.getMessage());
  44.   e.printStackTrace();
  45.  } finally {
  46.   // Release the connection.
  47.   //method.releaseConnection();
  48.  }


 
 
Merci de ton aide phnatomass

Reply

Marsh Posté le 08-03-2012 à 17:08:03    

Quelqu'un peut-il m'aider à réaliser un programme en java permettant de faire la gestion du payroll des professeurs dans une école?
C'est Dave

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed