哟嘿 2019-10-10 15:17 采纳率: 50%
浏览 1919

javax.net.ssl.SSLException: Read error: ssl=0x56e63588: I/O error during system call, Connection reset by peer

不止出现在Android版本低的机型上 查了好多博客 有的说是服务器的原因 但是我觉得应该还是代码原因 请大神指教

private H buildService(int time, boolean isOpenCache) {
    //手动创建一个OkHttpClient并设置超时时间
    OkHttpClient.Builder builder = new OkHttpClient.Builder();

    //日志打印
    if (isDebugModel) {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        builder.addInterceptor(httpLoggingInterceptor);
    }
    //添加header
     String token =getAppToken();/*getAppToken()*/
    if (!TextUtils.isEmpty(token)) {
        builder.addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request()
                        .newBuilder()
                        .addHeader("token", token)
                        .build();
                return chain.proceed(request);
            }
        });
    }
    if (isOpenCache) {
        builder.cache(cache);
        builder.addInterceptor(new CacheInterceptor());
        builder.addNetworkInterceptor(new CacheInterceptor());
    }
    if (time > 0) {
        if (time == 6)
            time = 10;
        DEFAULT_TIMEOUT = time;
    }
    builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
    builder.readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
    builder.writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
    builder.sslSocketFactory(createSSLSocketFactory());
    builder.hostnameVerifier(new TrustAllHostnameVerifier());

    OkHttpClient httpClient = builder.build();

    Retrofit retrofit = new Retrofit.Builder()
            .client(httpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .baseUrl(baseUrl)
            .build();
    return retrofit.create(hClass);
}
private static class TrustAllCerts 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];
    }
}

private static class TrustAllHostnameVerifier implements HostnameVerifier {
    @Override   public boolean verify(String hostname, SSLSession session) {
        return true;    }
}

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

    }
    return ssfFactory;
}

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2019-10-10 18:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog