- 当前位置:
- 首页
- Android 中使用Https 相关问题
Android 中使用Https 相关问题
*若价格不公道,可以让提问者在平台追加赏金哦,平台是您利益的保证
已完成
问题详情:分类: -https
由于iOS官方强制使用https,所以后台最近把所有接口切换到https,据说就是在把协议换了一下。然后Android这边也就把接口路径由http换成了https.问题来了,就是偶尔会出现 网络超时的情况,而且一出现超时则后面的请求都会超时,然后过一会又可以连接上。出现超时的时候在后台查下日志,发现请求都没到服务器去,好像直接在客户端断开了。不知道有木有人遇到过这种情况。
网络框架用的 OKHttp,设置了下面的代码:
网络框架用的 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)
暂无评论,快来写一下吧
竞答者
暂无人竞答