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

API standards et tierces Java Discussion :

HttpClient et jsessionid


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 7
    Par d�faut HttpClient et jsessionid
    Bonjour � tous,

    Tout d'abord d�sol�, j'ai post� ce message d'abord dans la cat�gorie Logging avant de me raviser et de le poster ici o� je pense qu'il a plus sa place.
    Je n'ai pas trouv� comment le supprimer (si c'est possible) dans Logging

    J'essaye de reproduire un locale (pour mon utilisation personnelle) une copie de quelques articles du code de la propri�t� intellectuelle depuis L�gifrance.
    J'utilise pour cela l'API HttpComponents Client 4.1 d'Apache. Pas de probl�me jusque l�.
    Mon probl�me commence lorsque je t�l�charge certaines pages qui m'int�ressent avec mon client maison et que je ne r�cup�re pas la totalit� du code HTML que j'aurais avec un navigateur.
    J'ai fait diff�rents tests et je pense que mon probl�me vient du fait que le serveur ne reconnait pas ma session.

    Voici le type de page que je souhaite obtenir :
    http://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=26922729D310BF83202B76B54B9F16E7.tpdjo03v_1?idArticle=LEGIARTI000006278868&cidTexte=LEGITEXT000006069414&dateTexte=20110811
    Ce qui m'int�resse surtout c'est de pouvoir acc�der � l'historique de l'article (� gauche) or c'est pr�cisemment ce que je n'arrive pas � r�cup�rer depuis mon client. Le seul moyen que j'ai trouv� pour y acc�der est de d'abord cr�er une session avec mon navigateur pour r�cup�rer le jsessionid puis de t�l�charger la page depuis mon client en ins�rant le jsessionid, do� ma th�rie de la session non-reconnue (mais je peux me planter...).
    Bref je commence � me taper la t�te sur ma table et mon chat me regarde bizarrement... c'est pour �a que j'appelle � l'aide.
    Ci-dessous le code de mon mini-client (pomp� � droite � gauche et cod� avec les pieds... un petit client de test quoi)

    Je remercie tr�s sinc�rement celui ou ceux qui pourront m'orienter vers une solution.

    Pour ceux qui auraient des doutes, cela n'a rien d'ill�gal dans la mesure o� l'utilisation n'est pas commerciale et que les textes de codes sont en principe libre de droit.
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    public class clientHttp {
    static String path = "fichier";
    	static int n = 0;
    	static String idSession ="";
    	static HttpClient httpclient = new DefaultHttpClient();
    	static HttpContext localContext = new BasicHttpContext();
    	static  HttpGet httpget;
    	static List<Cookie> cookies;
    	static CookieStore cookieStore; 
     
    	public final static void main(String[] args) throws Exception {
     
     
            try {
                cookieStore = new BasicCookieStore();
                localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
                httpget = new HttpGet("http://www.legifrance.gouv.fr");
                httpget.getParams().setParameter(
                		ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
     
                executeRequest();
                afficheCookies();         
     
                httpget.setURI(new URI("http://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid="+idSession+"?idArticle=LEGIARTI000006278868&amp;cidTexte=LEGITEXT000006069414"));
                executeRequest();
                afficheCookies();
     
            } finally {
                httpclient.getConnectionManager().shutdown();
            }
        }
     
    	public static void executeRequest() throws ClientProtocolException, IOException{
    		System.out.println("\nexecuting request " + httpget.getURI());
    		HttpResponse response = httpclient.execute(httpget, localContext);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
                n++;
                File f = new File(path+""+n+".html");
                FileOutputStream fos = new FileOutputStream(f);
                InputStream instream = entity.getContent();
    		    int l;
    		    while ((l = instream.read()) != -1) {
    		    	fos.write(l);
    		    }       
            }
            // Consume response content
            EntityUtils.consume(entity);
     
    	}
     
    	public static void afficheCookies(){
    		cookies = cookieStore.getCookies();
            for (int i = 0; i < cookies.size(); i++) {
                System.out.println("Local cookie: " + cookies.get(i));
            }
            System.out.println("----------------------------------------");
    	}
    }

  2. #2
    Expert �minent
    Avatar de tchize_
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par d�faut
    la session, c'est le serveur qui la cr�e, pas ton client. Tu dois donc
    1) te connecter au site avec ton code
    2) r�cup�rer la premi�re page
    3) extraire de la premi�re page le sessionid que tu devra utiliser par la suite.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 7
    Par d�faut
    Citation Envoy� par tchize_ Voir le message
    la session, c'est le serveur qui la cr�e, pas ton client. Tu dois donc
    1) te connecter au site avec ton code
    2) r�cup�rer la premi�re page
    3) extraire de la premi�re page le sessionid que tu devra utiliser par la suite.
    Oui c'est bien comme �a que je le vois aussi et je pensais d�ja faire comme �a.

    Voici la trace de mon programme :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    executing request http://www.legifrance.gouv.fr
    Response content length: -1
    Local cookie: [version: 0][name: JSESSIONID][value: 5FFD76023857CAC9C253FF45F43F19C9.tpdjo05v_1][domain: www.legifrance.gouv.fr][path: /][expiry: null]
    ----------------------------------------
     
    executing request http://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=?idArticle=LEGIARTI000006278868&amp;cidTexte=LEGITEXT000006069414
    Response content length: -1
    Local cookie: [version: 0][name: JSESSIONID][value: 5FFD76023857CAC9C253FF45F43F19C9.tpdjo05v_1][domain: www.legifrance.gouv.fr][path: /][expiry: null]
    ----------------------------------------
    Je r�cup�re bien le cookie avec le jsessionid puis je l'ins�re dans mon get suivant, mais rien � faire la partie gauche (l'historique) ne figure pas dans le fichier que je t�l�charge.
    Il y a un truc que je dois manquer...

  4. #4
    Expert �minent
    Avatar de tchize_
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par d�faut
    si j'en juge par votre deuxi�me requete, le jsession_id n'est pas pr�sent dans l'url.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 7
    Par d�faut
    Citation Envoy� par tchize_ Voir le message
    si j'en juge par votre deuxi�me requete, le jsession_id n'est pas pr�sent dans l'url.
    Exact, avec tous mes diff�rents tests, j'ai post� un mauvais code... mea culpa

    En fait, j'avais oubli� une ligne dans mon afficheCookies :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void afficheCookies(){
    public static void afficheCookies(){
    		cookies = cookieStore.getCookies();
            for (int i = 0; i < cookies.size(); i++) {
                System.out.println("Local cookie: " + cookies.get(i));
                idSession = cookies.get(i).getValue(); //cette ligne
            }
            System.out.println("----------------------------------------");
    	}
    	}
    Et donc voici la trace maintenant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    executing request http://www.legifrance.gouv.fr
    Response content length: -1
    Local cookie: [version: 0][name: JSESSIONID][value: 66807E99D597B5AEFDA042B280054558.tpdjo17v_2][domain: www.legifrance.gouv.fr][path: /][expiry: null]
    ----------------------------------------
     
    executing request http://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=66807E99D597B5AEFDA042B280054558.tpdjo17v_2?idArticle=LEGIARTI000006278868&amp;cidTexte=LEGITEXT000006069414
    Response content length: -1
    Local cookie: [version: 0][name: JSESSIONID][value: 66807E99D597B5AEFDA042B280054558.tpdjo17v_2][domain: www.legifrance.gouv.fr][path: /][expiry: null]
    ----------------------------------------
    Mais le probl�me reste malheureusement le m�me..

  6. #6
    Expert �minent
    Avatar de tchize_
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par d�faut
    Dans ce cas ce n'est pas �a le probl�me. Essayez de changer le user agent de commons httpclient pour vous faire passer pour un navigateur normal et non pas un robot. Pas mal de site on des rendus diff�rents en fonction de l'agent.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 7
    Par d�faut
    Citation Envoy� par tchize_ Voir le message
    Dans ce cas ce n'est pas �a le probl�me. Essayez de changer le user agent de commons httpclient pour vous faire passer pour un navigateur normal et non pas un robot. Pas mal de site on des rendus diff�rents en fonction de l'agent.
    Un grand grand merci, �a fonctionne parfaitement en changeant l'user-agent.

    J'ai juste ajouter la ligne suivante apr�s l'affectation de mon premier httpget :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    httpget.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1");
    Pour ceux que �a int�resse la liste des User-agents se trouve facilement sur Wikipedia :
    http://fr.wikipedia.org/wiki/User-Agent

    A pus

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [API] HttpClient
    Par eyghon dans le forum Eclipse Java
    R�ponses: 1
    Dernier message: 07/12/2005, 00h22
  2. [HttpClient][Encodage] Caractère '?'
    Par nicolas.charlot dans le forum Entr�e/Sortie
    R�ponses: 3
    Dernier message: 20/07/2005, 10h33
  3. [HTTPClient] Listes a choix multiples
    Par The Wretched dans le forum Entr�e/Sortie
    R�ponses: 3
    Dernier message: 06/04/2005, 15h25
  4. [Struts] Pbms de r�f�rences - champ jsessionid
    Par PeteMitchell dans le forum Struts 1
    R�ponses: 14
    Dernier message: 13/04/2004, 15h02
  5. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum D�veloppement Web en Java
    R�ponses: 4
    Dernier message: 04/02/2004, 15h25

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