Ae pessoal fiz um simples codigo pra conectar em um site, porem está dando o seguinte erro:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
segue o codigo:
public void conecta(String username, String password){
try{
URL u = new URL( "https://201.33.18.251/claro_sp/cod_php/identifica.php");
HttpURLConnection huc = (HttpURLConnection)u.openConnection();
huc.setRequestMethod("POST");
//huc.setInstanceFollowRedirects(true);
huc.setDoOutput(true);
String data = URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
data += "&" + URLEncoder.encode("senha","UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
OutputStreamWriter wr = new OutputStreamWriter(huc.getOutputStream()); //nessa linha que dispara a exceção
wr.write(data);
wr.flush();
wr.close();
}catch(Exception e){
System.out.println(e.toString());
}
}
Grato
Lucas
Você vai ter de cadastrar o certificado desse site no arquivo CACERTS.
thingol, poderia me explicar melhor!
Grato,
Lucas
Refiz o codigo, porem acontece outro erro:
java.io.IOException: HTTPS hostname wrong: should be <201.33.18.251>
no seguinte codigo:
public void conecta(String username, String password){
try{
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){}
}
}; new Throwable("ERRO AO CRIAR CERTIFICADO");
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
return ;
}
URL url = new URL( "https://201.33.18.251/claro_sp/cod_php/identifica.php");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
String usuario = "login="+username+"&senha="+password;
// Retrieve information from HTTPS: GET
DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); //Aqui acontece o erro
wr.writeUTF(usuario);
wr.flush();
wr.close();
System.out.println("conectou");
}catch(Exception e){
System.out.println(e.toString());
}
}
cara… estou com o mesmo erro…
vc conseguiu arrumar isso??