1 pièce(s) jointe(s)
Insérer valeur dans champs de page web
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:
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 :
Pièce jointe 190200
Je vous remercie d'avance, j'ai épuise tous les liens web possibles et imaginables mais sans grand résultat.