我想通过使用
请求HTTPS服务器而不绕过SSL证书验证AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);
我想要一个使用密钥库文件验证SSL的方法。请帮忙。
答案 0 :(得分:1)
第1步:首先下载 Keystore Explorer Download Link并创建一个类型为 BKS-V1 的新密钥库文件并导入公钥证书到密钥库。
步骤2:将Keystore文件复制到项目的res / raw。
步骤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:在AsyncHttpClient对象中设置SocketFactory。
AsyncHttpClient mAsyncHttpClient = new AsyncHttpClient();
mAsyncHttpClient.addHeader(HTTP.CONTENT_TYPE,
"application/x-www-form-urlencoded;charset=UTF-8");
mAsyncHttpClient.setSSLSocketFactory(getSocketFactory());
答案 1 :(得分:0)
我认为你可以引用这个library。库中的AsyncHttpClient可用于在Android应用程序中进行异步GET,POST,PUT和DELETE HTTP请求。还提供SSlSocketFactory来指定SSL相关参数。