android httpclient 证书验证码,Android HttpClient-证书中的主机名不匹配 != <*。example.com>...

小编典典

这是我的(编辑)解决方案:

class MyVerifier extends AbstractVerifier {

private final X509HostnameVerifier delegate;

public MyVerifier(final X509HostnameVerifier delegate) {

this.delegate = delegate;

}

@Override

public void verify(String host, String[] cns, String[] subjectAlts)

throws SSLException {

boolean ok = false;

try {

delegate.verify(host, cns, subjectAlts);

} catch (SSLException e) {

for (String cn : cns) {

if (cn.startsWith("*.")) {

try {

delegate.verify(host, new String[] {

cn.substring(2) }, subjectAlts);

ok = true;

} catch (Exception e1) { }

}

}

if(!ok) throw e;

}

}

}

public DefaultHttpClient getTolerantClient() {

DefaultHttpClient client = new DefaultHttpClient();

SSLSocketFactory sslSocketFactory = (SSLSocketFactory) client

.getConnectionManager().getSchemeRegistry().getScheme("https")

.getSocketFactory();

final X509HostnameVerifier delegate = sslSocketFactory.getHostnameVerifier();

if(!(delegate instanceof MyVerifier)) {

sslSocketFactory.setHostnameVerifier(new MyVerifier(delegate));

}

return client;

}

2020-09-28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值