在AsyncHttpClient中使用HTTPS(库)

时间:2015-02-02 09:24:58

标签: android rest https android-asynctask

我想通过使用

请求HTTPS服务器而不绕过SSL证书验证
AsyncHttpClient client = new AsyncHttpClient(true, 80, 443); 

我想要一个使用密钥库文件验证SSL的方法。请帮忙。

2 个答案:

答案 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相关参数。