Bonjour,
j'essaye de faire un programme Java qui me permet de lire et d'éditer des pages de Wikipédia. Pour éditer une page, je commence par me logguer et pour vérifier que le login a marché, je recherche la chaîne "Identification réussie."
Ca ne marche pas, parce que je reçois en fait "Identification réussie.". Comment on gère les caractères accentués correctement ?
Voici mon code, récupéré depuis http://en.wikipedia.org/wiki/User:MER-C/Wiki.java et modifié:
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 public boolean login(String username, String password) throws IOException { // sanitize username = URLEncoder.encode(username, "UTF-8"); password = URLEncoder.encode(password, "UTF-8"); // "enable" cookies String url = wiki.getWikiURL() + "?title=Special:Userlogin"; URLConnection connection = new URL(url).openConnection(); grabCookies(connection); // find the target url = wiki.getWikiURL() + "?title=Special:Userlogin&action=submitlogin&type=login"; connection = new URL(url).openConnection(); setCookies(connection); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); // now we send the data out.print("wpName="); out.print(username); out.print("&wpPassword="); out.print(password); out.print("&wpRemember=1&wpLoginAttempt=Log+in"); out.close(); // make it stick by grabbing the cookie grabCookies(connection); BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(connection.getInputStream())); } catch (IOException e) { if (!(connection instanceof HttpURLConnection)) { throw e; } InputStream err = ((HttpURLConnection) connection).getInputStream(); if (err == null) { throw e; } in = new BufferedReader(new InputStreamReader(err)); } in.readLine(); // test for success String line; while ((line = in.readLine()) != null) { System.err.println(line); if (line.indexOf("Identification réussie.") != -1) { return true; } } return false; }
Partager