Bonsoir à tous. J'essaye en ce moment de me remettre sur java dans l'optique de me créer un programme d'automatisme pour accéder à certains de mes sites. Celui pour lequel j'ai le plus de mal est un site que j'ai conçu de manière à gêner les petits créateurs de bots pas trop compétents. L'ironie du sort est que j'ai besoin d'un bot à mon tour.

Donc j'ai découvert aujourd'hui l'api HttpClient de apache. Pas mal pratique, mais je suis quelque peu bloqué. J'exécute sans problème des pages webs. Le problème survient lors de l'authentification. Explications :
Je suis sur une page d'accueil avec formulaire d'authentification. Je remplis mes champs et envoie le formulaire. La page php actuelle ne renvoit rien, cependant elle vérifie si la connexion réussit. Si oui elle génère un identifiant que sera passé en paramètre à l'url en permanence et redirige sur une autre page. Si la connexion échoue, on est redirigé sur la première page. J'exécute donc avec mon code source la page loggin.php en remplissant bien les paramètres POST. Cependant je n'ai pas de résultat au niveau de la réponse, donc je suppose que je ne reçois que le code html de la page de vérification du formulaire.

Comment suivre les redirections? Comment récupérer ce paramètre GET si important?

Voila le code. Ne faites pas attention si s'est sale et mal organisé, pour le moment je fais juste des tests dans le main, j'aimerai savoir si ce que je veux est faisable avant de continuer.

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
 
HttpClient client = new DefaultHttpClient();
 
        client.getParams().setParameter("http.useragent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1");
        HttpPost post = new HttpPost("http://localhost/monsite/loggin.php");
 
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
 
        formparams.add(new BasicNameValuePair("login", "login"));
        formparams.add(new BasicNameValuePair("pass", "login"));
 
        HttpResponse response = client.execute(post);
        HttpEntity entity = response.getEntity();
 
        BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
        String ligne;
        String html = "";
 
        while((ligne = reader.readLine())!=null){
            html += ligne;
            System.out.println(ligne);
        }