java – 禁用HTTPS连接的SSL证书验证?
发布时间:2020-12-15 03:10:33 所属栏目:Java 来源:网络整理
导读:参见英文答案 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found3个 当我想打开HTTPS连接时,我得到SSL异常.如何设置HttpURLConnection以对此异常不敏感? 我的代码是: private String getData() { String res
参见英文答案 >
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found3个
当我想打开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,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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |