Bonjour à tous,
Je cherche à récupérer des informations de machines (imprimantes), et pour se faire, je passe par les IPs machines qui constitue une URL référencé par le constructeur.
Jusque là tout va très bien !
Seulement certain des rapports disponible sur le référencement sont protégés par des mots de passes. La page se présente donc de cette façon:
Mot de passe : _____________
[Bouton soumettre]
Une fois le mot de passe correcte, et le submit enclenché, la page se débloque et affiche le rapport.
J'ai donc fait en sorte de pouvoir rentrer le mot de passe et de l'envoyer en post via HttpPost de HttpClient.
J'ai aucune idée de si la méthode POST déclenche l'activation du submit, de si il ne faudrait pas mettre en place un keepAlive, ou meme passer par les servLets.
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 String str = JOptionPane.showInputDialog(null, "Présence de mot de passe\n" + this.idConnexion,"Erreur !", JOptionPane.ERROR_MESSAGE); List<NameValuePair> formparams = new ArrayList<NameValuePair>(); formparams.add(new BasicNameValuePair("login_form", str)); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost("http://" + this.getIdConnexion() +"/cgi-bin/posttest/printer/login.html"); httppost.setEntity(entity); System.out.println(httppost.getURI()); ResponseHandler<String> rh = new ResponseHandler<String>() { @Override public String handleResponse(final HttpResponse response) throws IOException { StatusLine statusLine = response.getStatusLine(); HttpEntity entity = response.getEntity(); if (statusLine.getStatusCode() >= 300) { throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase()); } if (entity == null) { throw new ClientProtocolException("Response contains no content"); } ContentType contentType = ContentType.getOrDefault(entity); Charset charset = contentType.getCharset(); Reader reader = new InputStreamReader(entity.getContent(), charset); //j'ai tenter un retour en String pour afficher le contenu } }; String ligne = httpclient.execute(httppost, rh); System.out.println("CEST OK" + ligne);
Je rappel que le but et qu'une fois le mot de passe entré, la page se débloque et donne accés au rapport, et ensuite moi je réimplémente mon cheminement habituel, comme pour les machines non protégé.
Le mot de passe est bon puisque je test sur une seule machine pour en être certain du fonctionnement du programme.
Est ce que vous aves des solutions à me proposer, pour débloquer mon chmilblique !?
Partager