Bonjour,

Dans le cadre d'un projet je dois parcourir un site web grâce à une application Java.

Je me connecte à une page d'authentification grâce à cette fonction :

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
/** 
         * Permet de créer une connexion https en acceptant les certificats
         * @param url L'url de la page.
         */
	public URLConnection httpsConnection(String url)
	{
		URLConnection conn = null;
			try{
			    //Remplace le vérifieur de nom d'hôte par un autre moins restrictif
			    HostnameVerifier hostnameVerifier=new HostnameVerifier(){
			        public boolean verify(String urlHostName,SSLSession session){
			            return true;
			        }
			    };
			    HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
 
			    //Remplace le vérifieur de certificat par un autre moins restrictif
			    TrustManager[] trustAllCerts=new TrustManager[]{
			        new X509TrustManager(){
			            public java.security.cert.X509Certificate[] getAcceptedIssuers(){return null;}
			            public void checkClientTrusted(java.security.cert.X509Certificate[] certs,String authType){}
			            public void checkServerTrusted(java.security.cert.X509Certificate[] certs,String authType){}
			        }
			    };
			    SSLContext sslContext=SSLContext.getInstance("SSL");
			    sslContext.init(null,trustAllCerts,new java.security.SecureRandom());
			    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());            
 
 
			    //Chargement de la page...
			    conn = new URL(url).openConnection();
			    System.out.println("Connexion au serveur ("+url+")...");
 
			}catch(Exception ex){
			    System.err.println(ex);
			}
			System.out.println("Connexion réussie!");
			return conn;
		}
Puis j'utilise cette fonction pour mon authentification :

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
public String loghttps(URLConnection conn, String login, String password) throws Exception
		{
			String server ="https://cas.univ-bpclermont.fr/cas/login?service=http://ent.univ-bpclermont.fr/Login";
			HttpsURLConnection uc =(HttpsURLConnection) new URL(server).openConnection();
			uc.setDoOutput(true);
			uc.setRequestMethod("POST");
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream()));
			String query="";
			query += URLEncoder.encode("username")+ "="+ URLEncoder.encode(login);
			query +="&";
			query += URLEncoder.encode("password")+ "=" + URLEncoder.encode(password);
			bw.write(query);
			bw.write("\r\n");
			bw.flush();		
			bw.close();
 
			InputStream is = uc.getInputStream();
			BufferedReader rd = new BufferedReader(new InputStreamReader(is));
		    String line;
		    StringBuffer response = new StringBuffer(); 
		    while((line = rd.readLine()) != null) 
		    {
		      response.append(line);
		      response.append('\r');
		    }
		    rd.close();
		    return response.toString();
		}
Je pense que le POST ne fonctionne pas car le texte de la page après le POST est toujours le même qu'avant le post.

Merci d'éclairer ma lanterne