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 :

Requete HTTP Post et Cookies


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Requete HTTP Post et Cookies
    Bonjour à tous,

    Je tente de concevoir un genre de "bot" http en java.
    Le but de mon bot sera de se logguer sur un site puis d'aller voir le contenu d'une page.

    J'ai reussi à coder la procedure de log mais je ne sais pas comment ouvrir une autre page du site en restant loggué.

    Voila mon code pour me logguer:

    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
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
     
     
    public class TestPost
    {
    	public static String post(String myurl, String name1, String value1, String name2, String value2)
    	{
    		String retour = "";
    		try {
    			// Construct data
    			String data = URLEncoder.encode(name1, "UTF-8") + "=" + URLEncoder.encode(value1, "UTF-8");
    			data += "&" + URLEncoder.encode(name2, "UTF-8") + "=" + URLEncoder.encode(value2, "UTF-8");
     
    			// Envoi des données
    			URL url = new URL(myurl);
    			URLConnection conn = url.openConnection();
    			conn.setDoOutput(true);
    			OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    			wr.write(data);
    			wr.flush();
     
    			//Récupération de la réponse
    			BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    			String line;
    			while ((line = rd.readLine()) != null)
    			{
    				retour = retour + line + "\n";
    			}
    			wr.close();
    			rd.close();
    		} catch (Exception e) {
    		}
    		return retour;
    	}
     
    	public static void main(String[] args)
    	{
    		System.out.println(post("http://www.lesite.com/login.php","pseudo","mon_pseudo","password","mon_pass"));
    	}
     
    }
    J'obtiens bien la page qui me confirme être authentifié !
    Maintenant je veux aller sur la page http://www.lesite.com/info.php en restant connecté .

    Quelles méthodes utilisés ?

    Merci d'avance pour votre aide !

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    En fait j'ai un problème avec ma procédure d'authentification, quand j'ai voulu la tester sur une page ayant besoin de cookies j'ai eu ce message:

    "Votre navigateur doit accepter les cookies...."

    J'ai essayer d'utiliser cette classe mais j'ai des problème avec mes connexion et quand j'arrive à corriger ces erreurs le site me dit de nouveau que j'ai besoin des cookies ....

    Merci d'avance

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    J'ai réalisé plusieurs bots, avec succès, grâce au HTTPClient de Jakarta.
    C'était pour des browser game.
    Le HTTPClient permet de gérer les cookies, login/mdp... La doc est bien faite.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    C'est dans le même but
    Je vais me renseigner sur le HTTPClient de Jakarta !
    Peux-tu me montrer ce que tu as fait ? Au moins les procédures de connexion de base ?
    Merci de ton aide !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Après avoir survolé la doc, j'ai voulu me lancer dans le tutorial mais j'ai une erreur que je n'arrive pas à régler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    	at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
    	at HttpClientTutorial.main(HttpClientTutorial.java:18)
    J'ai pourtant inclus les deux librairies suivantes:
    -commons-httpclient-3.1.jar
    -log4j-1.2.15.jar

    Encore merci d'avance

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    C'est bien de survoler, mais il faut parfois savoir atterrir
    liste des dépendances
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Je pensai avoir vu toutes les dépendances, désolé !
    Merci pour ton aide ! Ça à l'air de fonctionner !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    J'ai réussi à me connecter à mon site avec HttpClient et à suivre la redirection automatique lors de la connexion !
    Mais j'ai un problème très embêtant:
    Lorsque je récupère la page avec mon programme je récupère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tu possèdes <strong> dollars</strong> !
    Alors que je devrais obtenir:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tu possèdes <strong>200 dollars</strong> !
    Je pense que le 200 est représenter dans le code source par un appel à une methode genre "getMoney.php" et la méthode get de HttpClient n'execute pas ce code.

    Y-a t-il un moyen de récupérer cette valeur sans connaitre le nom de la méthode ?

    Merci d'avance

  9. #9
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Non évidemment !
    En utilisant un navigateur classique, regarde le source HTML. C'est certainement du javascript : la valeur en dollars est donc déjà dans la page, mais ailleurs, tout en haut par exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Effectivement, la page fait appel à un javascript nommé: "xhr.js" qui récupère des données au format XML ...
    Je n'ai jamais touché au XML ... donc je comprends pas grand chose, peux-tu me guider ?

    Merci de ton aide.

  11. #11
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Ptitkarl Voir le message
    Effectivement, la page fait appel à un javascript nommé: "xhr.js" qui récupère des données au format XML ...
    Je n'ai jamais touché au XML ... donc je comprends pas grand chose, peux-tu me guider ?
    Il te suffit de récupérer le XML de la même manière. Le XML est un ensemble de balises imbriquées. Si tu sais parser du HTML, alors tu sauras aussi parser du XML. Le XML est plus propre que le HTML car toute balise ouverte doit être fermée, c'est tout. Maintenant t'es expert en XML
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Maintenant la question est:
    "Comment récupérer le XML contenant les valeurs en utilisant HTTPClient ?"

    Car je ne vois pas du tout comment faire cela en Java.

    Merci pour ton explication claire du XML

  13. #13
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    D'après ce que tu as dit, ce XML est récupérer en asynchrone par de l'Ajax. Récupère le javascript, et regarde comment la fonction récupère ce XML !
    Si c'est de l'Ajax, il utilise XMLHttpRequest. C'est du protocole HTTP.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Je t'envoie le lien vers le javascript en MP car je ne comprends pas comment il fonctionne.
    Désolé de poser autant de question mais le XML c'est vraiment pas mon truc.

  15. #15
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Ptitkarl Voir le message
    Je t'envoie le lien vers le javascript en MP car je ne comprends pas comment il fonctionne.
    Désolé de poser autant de question mais le XML c'est vraiment pas mon truc.
    Pour le javascript, poste dans la section appropriée, tu trouveras tout l'aide dont tu as besoin !
    Il te faut regarder dans le source HTML la fonction javascript utilisée, avec les paramètres. Ensuite, tu peux analyser le javascript.
    Mais ce n'est plus du Java
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Le problème c'est que dans la source je ne trouve aucun appel au fonction des fichiers javascript ... j'ai chercher dans la source de mon navigateur ainsi que dans la source de mon HttpClient mais je ne vois pas !

  17. #17
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Ptitkarl Voir le message
    Le problème c'est que dans la source je ne trouve aucun appel au fonction des fichiers javascript ... j'ai chercher dans la source de mon navigateur ainsi que dans la source de mon HttpClient mais je ne vois pas !
    Et pourtant, la valeur cherchée ne s'affiche pas par magie
    Poste dans la section javascript !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Encore une fois merci pour ton aide.

    J'ai posté ici :

    XMLHttpRequest et recuperation d'informations

Discussions similaires

  1. probleme Requete HTTP (post)
    Par Pyroclem dans le forum Débuter
    Réponses: 1
    Dernier message: 18/03/2009, 23h52
  2. Requete HTTP POST MIME - Upload de fichier
    Par Olphébus dans le forum Réseau
    Réponses: 9
    Dernier message: 24/01/2009, 10h49
  3. Réponses: 1
    Dernier message: 17/12/2008, 15h15
  4. Réponses: 2
    Dernier message: 04/11/2008, 15h04
  5. [curl] requete http post ( simuler envoi de formulaire )
    Par mikebranque dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 07/07/2008, 21h55

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