Android 如何获取SSLCertificateSocketFactory实例?

Android 如何获取SSLCertificateSocketFactory实例?,android,sockets,ssl,Android,Sockets,Ssl,查看文档,我看不出如何使用该工厂来获得这样一个实例 我的意思是使用构造函数。建议只返回SocketFactory或SSLSocketFactory 但是没有方法返回SSLCertificateSocketFactory 我想在某些用例中可以使用SSLSocketFactory,但我对使用SSLCertificateSocketFactory功能感兴趣,如setTrustManager(),例如,可以选择使用服务器证书的指纹进行验证 因此,我的问题是。不确定你想做什么,这不是一个万能的解决方案 这

查看文档,我看不出如何使用该工厂来获得这样一个实例

我的意思是使用构造函数。建议只返回
SocketFactory
SSLSocketFactory

但是没有方法返回SSLCertificateSocketFactory

我想在某些用例中可以使用SSLSocketFactory,但我对使用SSLCertificateSocketFactory功能感兴趣,如
setTrustManager()
,例如,可以选择使用服务器证书的指纹进行验证


因此,我的问题是。

不确定你想做什么,这不是一个万能的解决方案

这是一个信任所有人的解决方案,您可以找出需要修改的内容


我希望有帮助

参考matheszabi建议的链接

protected org.apache.http.conn.ssl.SSLSocketFactory createAdditionalCertsSSLSocketFactory() {
try {
    final KeyStore ks = KeyStore.getInstance("BKS");

    // the bks file we generated above
    final InputStream in = context.getResources().openRawResource( R.raw.mystore);  
    try {
        // don't forget to put the password used above in strings.xml/mystore_password
        ks.load(in, context.getString( R.string.mystore_password ).toCharArray());
    } finally {
        in.close();
    }

    return new AdditionalKeyStoresSSLSocketFactory(ks);

} catch( Exception e ) {
    throw new RuntimeException(e);
}
}

诚然,我不太清楚SSLCertificateSocketFactory在这里是做什么的,因为正如你所提到的,这家工厂并不完全符合人们的期望。当然,你可以打字,但为什么有人想这么做呢

选择SSLContext.getInstance(“TLS”)——或者,如果您只针对API9及以上版本,则选择getDefault()——并使用SSLContext.init()设置信任管理器,就像其他人一样