我想要请求到 HTTPS 服务器而无需通过使用,可绕过 SSL 证书验证
AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);
我想要用于验证 SSL 密钥库文件的方法。请帮助。
解决方法 1:
第 1 步: 首先下载密钥存储库资源管理器中的下载链接并创建一个新的密钥库文件的 type BKS V1和您的公钥证书导入到密钥存储库。
第 2 步: 将密钥库文件复制到 res/原材料的项目。
步骤 3: 使用此函数来获取 SSLSocketFactory
private SSLSocketFactory getSocketFactory() {
// TODO Auto-generated method stub
SSLSocketFactory sslFactory = null;
try {
KeyStore keyStore = KeyStore.getInstance("BKS");
InputStream instream = this.getResources().openRawResource(
R.raw.website_public);
keyStore.load(instream, "keystore_password".toCharArray());
sslFactory = new MySSLSocketFactory(keyStore);
} catch (KeyStoreException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (CertificateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnrecoverableKeyException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sslFactory;
}
步骤 4: 设置的 SocketFactory AsyncHttpClient 对象中。
AsyncHttpClient mAsyncHttpClient = new AsyncHttpClient();
mAsyncHttpClient.addHeader(HTTP.CONTENT_TYPE,
"application/x-www-form-urlencoded;charset=UTF-8");
mAsyncHttpClient.setSSLSocketFactory(getSocketFactory());