Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有SSLCaching和安卓密钥库的HttpClient_Java_Android_Ssl_Httpclient - Fatal编程技术网

Java 带有SSLCaching和安卓密钥库的HttpClient

Java 带有SSLCaching和安卓密钥库的HttpClient,java,android,ssl,httpclient,Java,Android,Ssl,Httpclient,我想使用SSL客户端身份验证和SSL缓存连接到https服务器。据我所知,你只能有一个或另一个,我不明白为什么会这样 目前,我使用的是一个DefaultHttpClient,它接受一个ClientConnectionManager,我用一个加载了pkcs12密钥库的SSLSocketFactory设置了这个ClientConnectionManager,这样我就可以执行SSL客户端身份验证 我还找到了SSLCertificateSocketFactory.getHttpSocketFactory

我想使用SSL客户端身份验证和SSL缓存连接到https服务器。据我所知,你只能有一个或另一个,我不明白为什么会这样

目前,我使用的是一个DefaultHttpClient,它接受一个ClientConnectionManager,我用一个加载了pkcs12密钥库的SSLSocketFactory设置了这个ClientConnectionManager,这样我就可以执行SSL客户端身份验证

我还找到了SSLCertificateSocketFactory.getHttpSocketFactory(),它可以传递一个SSLSessionCache

然后我注册了插座工厂

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https",socketFactory , port));
并使用注册表创建ClientConnectionManager,然后创建HttpClient

ThreadSafeClientConnManager ccm = new ThreadSafeClientConnManager(httpParameters, registry);
httpClient = new DefaultHttpClient(ccm, httpParameters);
但是我不知道如何为SSLSocketFactory提供SSLSessionCache,或者为SSLCertificateSocketFactory提供密钥库

最后,我研究了如何使用AndroidHttpClient,您可以通过它传递一个用于SSLCaching的上下文,但是我找不到任何方法让AndroidHttpClient使用我的ClientConnectionManager

我是错过了什么还是真的不可能


感谢HttpClient内置了SSL会话缓存,据我所知,SSLSessionCache用于HttpsURLConnection


它没有很好的文档记录,是吗。

HttpClient内置了SSL会话缓存,据我所知,SSLSessionCache用于HttpsURLConnection

它没有很好的记录,是吗