Bonjour.

Je ne suis pas sur d'avoir mis mon topic dans la bonne catégorie donc merci de me signaler si il existe une catégorie plus adéquate.

J’aimerais faire a partir d’une URL, faire une requête https et afficher le code source de la page.

J’y arrive bien avec une requête http normal de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
private void httpRequest() {
	try {
		URL url = new URL("http://www.google.com");
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		InputStream urlData = connection.getInputStream();
		System.out.println(convertStreamToString(urlData));
	} catch (Exception e) {
		e.printStackTrace();
		System.out.println("the server is not responding");
	}
}
Si ça intéresse des gens voici ma méthode convertStreamToString
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
 
public static String convertStreamToString(InputStream is) {
	BufferedReader reader = new BufferedReader(new InputStreamReader(is));
	StringBuilder sb = new StringBuilder();
	String line = null;
	try {
		while ((line = reader.readLine()) != null) {
			sb.append(line + "\n");
		}
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		try {
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return sb.toString();
}
Maintenant j’aimerais bien faire pareil pour une adresse https.
J’ai trouvé une façon qui me retourne bien la page mais en réécrivant la méthode de vérification en renvoyant toujours true.

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
 
private void httpsRequest() {
	try {
		HostnameVerifier hv = new HostnameVerifier() {
			public boolean verify(String urlHostName, SSLSession session) {
				return true;
			}
		};
		HttpsURLConnection.setDefaultHostnameVerifier(hv);
		URL url = new URL("https://www.globalsign.com");
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		InputStream urlData = connection.getInputStream();
		System.out.println(convertStreamToString(urlData));
	} catch (Exception e) {
		e.printStackTrace();
		System.out.println("the server is not responding");
	}
}
Donc j’ai le code de la page mais la validité de l’authentification n’est pas vérifiée.

Si qqun a une idée pour comment vérifier le certificat serveur ca m'interesse.
merci.

@+