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&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("----------------------------------------"); } }
Partager