将 HTTPS 与 AsyncHttpClient(库)一起使用
Using HTTPS with AsyncHttpClient(Library)
我想通过使用
来请求 HTTPS 服务器而不绕过 SSL 证书验证
AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);
我想要一个使用密钥库文件来验证 SSL 的方法。请帮忙。
我想你可以参考这个 library。库中的 AsyncHttpClient 可用于在你的 Android applications.And 还提供 SSlSocketFactory 来指定 SSL 相关参数。
第 1 步:首先下载 Keystore Explorer Download Link 并创建一个新的 BKS-V1 类型的 Keystore 文件,然后将您的 public 密钥证书 导入密钥库。
第 2 步:将密钥库文件复制到项目的 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());
我想通过使用
来请求 HTTPS 服务器而不绕过 SSL 证书验证AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);
我想要一个使用密钥库文件来验证 SSL 的方法。请帮忙。
我想你可以参考这个 library。库中的 AsyncHttpClient 可用于在你的 Android applications.And 还提供 SSlSocketFactory 来指定 SSL 相关参数。
第 1 步:首先下载 Keystore Explorer Download Link 并创建一个新的 BKS-V1 类型的 Keystore 文件,然后将您的 public 密钥证书 导入密钥库。
第 2 步:将密钥库文件复制到项目的 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());