Bonjour à tous,
Dans le cadre d'un projet, je développe une application. Dans l'une des classes, je dois me connecter à une page web et insérer une valeur dans le champ présent sur cette page puis lancer la recherche et insérer les valeurs de la recherche dans mon application.
Voici mon problème, dans le code html de cette page, le "Rechercher" est un bouton et non un input et il ne posséde pas de name, je ne sais donc pas comment procéder.
Voici mon code actuel qui ne fonctionne pas :
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
62
63
64
65
66
67
68 private String getResult() throws IOException{ String html_result=""; // On envoie un formulaire POST en renseignant les informations de connexion String url=this.url; Map<String, String> dataDiag = new HashMap<String, String>(); dataDiag.put("ndi", ndi_vga); dataDiag.put("bt1", "Rechercher"); // URL URL urlDiag =new URL(null, url,new sun.net.www.protocol.https.Handler()); // Création de la connexion HttpsURLConnection connDiag = (HttpsURLConnection) urlDiag.openConnection(); connDiag.setRequestMethod("POST"); connDiag.setRequestProperty("Connection","keep-alive"); connDiag.setDoOutput(true); connDiag.setDoInput(true); connDiag.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"); DataOutputStream outDiag=null; try { outDiag = new DataOutputStream(connDiag.getOutputStream()); } catch (IOException e) { // TODO Auto-generated catch block html_result="erreur proxy"; //e.printStackTrace(); } Set keysDiag = dataDiag.keySet(); Iterator keyIterDiag = keysDiag.iterator(); String contentDiag = ""; for(int i=0; keyIterDiag.hasNext(); i++){ Object key = keyIterDiag.next(); if(i!=0) contentDiag += "&"; contentDiag += key + "=" + URLEncoder.encode(dataDiag.get(key), "UTF-8"); } outDiag.writeBytes(contentDiag); outDiag.flush(); outDiag.close(); // On met le résultat en mémoire BufferedReader in = new BufferedReader(new InputStreamReader(connDiag.getInputStream())); String lineDiag = ""; // On assigne le résultat à la chaine html_result while((lineDiag=in.readLine())!=null) html_result+=lineDiag; in.close(); // On récupére le contenu de la page // Si c'est du SDSL, le code source contiendra "numero_ip_geo" return html_result; } public void parseHtml(String arg0){ // On cherche une information dans le code HTML // Elle se trouve entre pattern1 et pattern2 String pattern1="<div class=\"tableau_activation tableau\" id=\"saphir\">"; String pattern2="</div>"; String regexString = Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2); Pattern pattern = Pattern.compile(regexString); Matcher matcher = pattern.matcher(arg0); String textInBetween=""; while (matcher.find()) textInBetween = matcher.group(1); String textToParse="<div>"+textInBetween+"</div>"; Document doc=Jsoup.parse(textToParse); rows = doc.select("div class"); Elements nameTds=rows.get(0).select("div id"); for (int i=0;i<nameTds.size();i++){ cols.add(nameTds.get(i).text()); } }
Voici un aperçu de la page HTML en question et de son code :
Je vous remercie d'avance, j'ai épuise tous les liens web possibles et imaginables mais sans grand résultat.
Partager