This question already has answers here:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
(2个答案)
3年前关闭。
当我想打开HTTPS连接时,我会收到SSL异常。如何以一种对这种异常不敏感的方式设置HttpURLConnection?
我的代码是:
下面的方法来设置主机名
(2个答案)
3年前关闭。
当我想打开HTTPS连接时,我会收到SSL异常。如何以一种对这种异常不敏感的方式设置HttpURLConnection?
我的代码是:
private String getData() {
String response = null;
String connection = "https://www.kamalan.com/";
try {
URL url = new URL(connection);
Log.i(TAG, "Try to open: " + connection);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
int responseCode = conn.getResponseCode();
Log.i(TAG, "Response code is: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
if (in != null) {
StringBuilder strBuilder = new StringBuilder();
int ch = 0;
while ((ch = in.read()) != -1)
strBuilder.append((char) ch);
// get returned message and show it
response = strBuilder.toString();
Log.i("JSON returned by server:", response);
}
in.close();
} else {
Log.e(TAG, "Couldn't open connection in getResepiItems()");
}
} catch (SSLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
最佳答案
请按照以下方法,它对我有用。
URL url = new URL("Your URL");
HttpsURLConnection urlConnection =(HttpsURLConnection) url.openConnection(); urlConnection.setSSLSocketFactory(SSLCertificateSocketFactory.getInsecure(0, null));
urlConnection.setHostnameVerifier(getHostnameVerifier());
InputStream is = urlConnection.getInputStream();
OutputStream os = new FileOutputStream(downloadedFile);
byte[] data = new byte[1024];
int count;
while ((count = is.read(data)) != -1) {
os.write(data, 0, count);
}
os.flush();
os.close();
is.close();
下面的方法来设置主机名
private HostnameVerifier getHostnameVerifier() {
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv =
HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("com.example.com", session);
}
};
return hostnameVerifier;
}
09-12 03:28