<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      參考:https://blog.csdn.net/weixin_54087854/article/details/134625241
      https://blog.csdn.net/weixin_35647799/article/details/117684065
      Android4.4.2發(fā)送https請(qǐng)求時(shí),出現(xiàn)錯(cuò)誤:
      javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7eabc88: Failure in SSL library, usually a protocol error    error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741 0xa4fb8d5c:0x00000000)

      SSLSocket的setEnabledProtocols配置支持TLSv1.1,TLSv1.2協(xié)議
      輔助類

      import android.os.Build;
      
      import java.io.IOException;
      import java.net.InetAddress;
      import java.net.Socket;
      import java.security.KeyManagementException;
      import java.security.NoSuchAlgorithmException;
      
      import javax.net.ssl.SSLContext;
      import javax.net.ssl.SSLSocket;
      import javax.net.ssl.SSLSocketFactory;
      
      public class SSLSocketFactoryCompat extends SSLSocketFactory {
          private static final String[] TLS_V12_ONLY = {"TLSv1.2"};
      
          private final SSLSocketFactory delegate;
      
          public SSLSocketFactoryCompat() throws KeyManagementException, NoSuchAlgorithmException {
              SSLContext sc = SSLContext.getInstance("TLS");
              sc.init(null, null, null);
              delegate = sc.getSocketFactory();
          }
      
          public SSLSocketFactoryCompat(SSLSocketFactory delegate) {
              if (delegate == null) {
                  throw new NullPointerException();
              }
              this.delegate = delegate;
          }
      
          @Override
          public String[] getDefaultCipherSuites() {
              return delegate.getDefaultCipherSuites();
          }
      
          @Override
          public String[] getSupportedCipherSuites() {
              return delegate.getSupportedCipherSuites();
          }
      
          private Socket enableTls12(Socket socket) {
              if (Build.VERSION.SDK_INT >= 16 && Build.VERSION.SDK_INT < 20) {
                  if (socket instanceof SSLSocket) {
                      ((SSLSocket) socket).setEnabledProtocols(TLS_V12_ONLY);
                  }
              }
              return socket;
          }
      
          @Override
          public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
              return enableTls12(delegate.createSocket(s, host, port, autoClose));
          }
      
          @Override
          public Socket createSocket(String host, int port) throws IOException {
              return enableTls12(delegate.createSocket(host, port));
          }
      
          @Override
          public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
              return enableTls12(delegate.createSocket(host, port, localHost, localPort));
          }
      
          @Override
          public Socket createSocket(InetAddress host, int port) throws IOException {
              return enableTls12(delegate.createSocket(host, port));
          }
      
          @Override
          public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
              return enableTls12(delegate.createSocket(address, port, localAddress, localPort));
          }
      }

      TrustAllCerts類

      import java.security.cert.X509Certificate;
      
      import javax.net.ssl.X509TrustManager;
      
      public class TrustAllCerts implements X509TrustManager {
          @Override
          public void checkClientTrusted(X509Certificate[] chain, String authType) {}
      
          @Override
          public void checkServerTrusted(X509Certificate[] chain, String authType) {}
      
          @Override
          public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
      }

      創(chuàng)建OkHttpClient方法

                  OkHttpClient okHttpClient = null;
                  //日志攔截器
                  LoggingInterceptor loggingInterceptor = new LoggingInterceptor();
                  GzipRequestInterceptor gzipRequestInterceptor = new GzipRequestInterceptor();
      
                  // 邢帥杰 update 2023-08-08 新增用于https證書信任
                  OkHttpClient.Builder builder = new OkHttpClient.Builder();
                  builder.connectTimeout(timeout, TimeUnit.SECONDS);//響應(yīng)時(shí)間
                  builder.readTimeout(timeout, TimeUnit.SECONDS);//讀取時(shí)間
                  builder.addInterceptor(loggingInterceptor);//添加日志攔截器
                  // 信任https證書
                  builder.hostnameVerifier(new HostnameVerifier() {
                      @Override
                      public boolean verify(String hostname, SSLSession session) {
                          return true;
                      }
                  });
                  //信任所有https證書
                  TrustAllCerts trustAllCerts = new TrustAllCerts();
                  //安卓系統(tǒng)版本號(hào)
                  String androidVer = String.valueOf(android.os.Build.VERSION.RELEASE);//安卓4:4.4.2
                  //sdk版本號(hào)
                  int sdkVer = Build.VERSION.SDK_INT;//安卓4:19
                  //創(chuàng)建管理器
                  //如果是安卓4,強(qiáng)制啟用TLSv1.2
                  try {
                      SSLContext sslContext = null;
                      SSLSocketFactory factory = null;
                      if (sdkVer == 19 || "4.4.2".equals(androidVer) || androidVer.startsWith("4.")) {
                          sslContext = SSLContext.getInstance("TLSv1.2");
                          sslContext.init(null, new TrustManager[]{trustAllCerts}, new SecureRandom());
                          //為OkHttpClient設(shè)置sslSocketFactory
                          factory = new SSLSocketFactoryCompat(sslContext.getSocketFactory());
                      } else {
                          sslContext = SSLContext.getInstance("TLS");
                          sslContext.init(null, new TrustManager[]{trustAllCerts}, new SecureRandom());
                          factory = sslContext.getSocketFactory();
                      }
                      builder.sslSocketFactory(factory, trustAllCerts);
                      okHttpClient = builder.build();
                  } catch (Exception e) {
                      e.printStackTrace();
                  }

       

      posted on 2024-12-24 10:45  邢帥杰  閱讀(398)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日本九州不卡久久精品一区| 成人啪啪高潮不断观看| 亚洲欧洲日韩国内精品| 巨熟乳波霸若妻在线播放| 亚洲gv天堂无码男同在线观看 | 国产精品老熟女乱一区二区| 无码人妻丝袜在线视频| 99热精品国产三级在线观看| 久久国产成人高清精品亚洲| 欧美成人精品手机在线| 国产偷国产偷亚洲清高网站| 亚洲人黑人一区二区三区| 国产麻豆一区二区精彩视频 | 久久本道综合久久伊人| av综合亚洲一区二区| 中文字幕日韩精品国产| 静安区| 午夜福利理论片高清在线| 忘忧草www日本韩国| 中文字幕永久精品国产| 国产av丝袜熟女一二三| 色综合久久久久综合体桃花网| 一区二区三区激情都市| 日韩免费无码视频一区二区三区| 无码一区二区三区av在线播放 | 国产成人高清精品免费软件| 中文字幕日韩精品国产| 亚洲AV国产福利精品在现观看| 国产亚洲无线码一区二区| 亚洲人成网站在线观看播放不卡| 国产精品一区二区不卡91| 国产欧美VA天堂在线观看视频| 69精品丰满人妻无码视频a片| 精品国精品国自产在国产| 合作市| 9lporm自拍视频区| 酒店大战丝袜高跟鞋人妻| www亚洲精品| 草草浮力影院| 亚洲成人午夜排名成人午夜| 日本系列亚洲系列精品|