问题描述
||
我在Android 2.2上使用ssl有一些困难
我为ssl定制的Http客户端可以在较早和较早版本的Android上正常运行,
但是在2.2版的https请求上并不能全部运行。
这是我的代码:
public class SSLHttpClient extends DefaultHttpClient {
final Context context;
public SSLHttpClient(Context context,HttpParams params) {
super(params);
this.context = context;
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme(\"http\",PlainSocketFactory
.getSocketFactory(),80));
registry.register(new Scheme(\"https\",newSslSocketFactory(),443));
return new SingleClientConnManager(getParams(),registry);
}
private SSLSocketFactory newSslSocketFactory() {
try {
SSLSocketFactory sf = new SSLSocketFactory(keyStore,\"\",trustStore);
//---------some code--------------------------------------
return sf;
} catch (Exception e) {
throw new AssertionError(e);
}
}
}
我找到了一些类似的文章,但它们并不能解决我的问题。
也许有人面对这样的问题。
提前致谢......
解决方法
这样的配置对我有用(无需添加80端口即可对其进行测试):
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
registry.register(new Scheme(\"https\",sslSocketFactory,443));
SingleClientConnManager manager = new SingleClientConnManager(params,registry);