Android 中使用Https 相关问题

*若价格不公道,可以让提问者在平台追加赏金哦,平台是您利益的保证

已完成
Android 中使用Https 相关问题-奋斗吧
奋斗吧 4年前发布
悬赏:40.0 元

问题详情:分类: -https

由于iOS官方强制使用https,所以后台最近把所有接口切换到https,据说就是在把协议换了一下。然后Android这边也就把接口路径由http换成了https.问题来了,就是偶尔会出现 网络超时的情况,而且一出现超时则后面的请求都会超时,然后过一会又可以连接上。出现超时的时候在后台查下日志,发现请求都没到服务器去,好像直接在客户端断开了。不知道有木有人遇到过这种情况。

网络框架用的 OKHttp,设置了下面的代码:
 mOkHttpClient = new OkHttpClient.Builder()
.cache(cache)
.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
.sslSocketFactory(createSSLSocketFactory(),mMyTrustManager)
.hostnameVerifier(new TrustAllHostnameVerifier())
.build();


private MyTrustManager mMyTrustManager;

private SSLSocketFactory createSSLSocketFactory() {
SSLSocketFactory ssfFactory = null;
try {
mMyTrustManager = new MyTrustManager();
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{mMyTrustManager}, new SecureRandom());
ssfFactory = sc.getSocketFactory();
} catch (Exception ignored) {
ignored.printStackTrace();
}

return ssfFactory;
}
//实现X509TrustManager接口
public class MyTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}

//实现HostnameVerifier接口
private class TrustAllHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}



*若价格不公道,可以让提问者在平台追加赏金哦,平台是您利益的保证。你觉得当前的价格如何呢,奉上您珍贵的一票吧

虚高0人次 适中0人次 偏低0人次

分享海报会更快解决你的问题哦!分享海报

此处可发布评论

评论(0

暂无评论,快来写一下吧
客服QQ 1913284695