Problème de POST avec HttpsUrlConnection
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:
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:
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 :)