1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
   | private static void trustAllHosts() {         TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {             @Override             public java.security.cert.X509Certificate[] getAcceptedIssuers() {                 return new java.security.cert.X509Certificate[]{};             }
              @Override             public void checkClientTrusted(                     java.security.cert.X509Certificate[] chain,                     String authType) {             }
              @Override             public void checkServerTrusted(                     java.security.cert.X509Certificate[] chain,                     String authType) {
              }         }         };
          try {             SSLContext sc = SSLContext.getInstance("TLS");             sc.init(null, trustAllCerts, new SecureRandom());             HttpsURLConnection.setDefaultSSLSocketFactory(new MyCustomSSLSocketFactory(sc.getSocketFactory()));             HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {                 @Override                 public boolean verify(String s, SSLSession sslSession) {                     return true;                 }             });         } catch (Exception e) {             e.printStackTrace();         }     }
      
 
 
           private static class MyCustomSSLSocketFactory extends SSLSocketFactory {
          private final SSLSocketFactory delegate;
          public MyCustomSSLSocketFactory(SSLSocketFactory delegate) {             this.delegate = delegate;         }
                            @Override         public String[] getDefaultCipherSuites() {             return delegate.getDefaultCipherSuites();         }
                   @Override         public String[] getSupportedCipherSuites() {             return delegate.getSupportedCipherSuites();         }
 
          @Override         public Socket createSocket(final Socket socket, final String host, final int port,                                    final boolean autoClose) throws IOException {             final Socket underlyingSocket = delegate.createSocket(socket, host, port, autoClose);             return overrideProtocol(underlyingSocket);         }
 
          @Override         public Socket createSocket(final String host, final int port) throws IOException {             final Socket underlyingSocket = delegate.createSocket(host, port);             return overrideProtocol(underlyingSocket);         }
          @Override         public Socket createSocket(final String host, final int port, final InetAddress localAddress,                                    final int localPort) throws                 IOException {             final Socket underlyingSocket = delegate.createSocket(host, port, localAddress, localPort);             return overrideProtocol(underlyingSocket);         }
          @Override         public Socket createSocket(final InetAddress host, final int port) throws IOException {             final Socket underlyingSocket = delegate.createSocket(host, port);             return overrideProtocol(underlyingSocket);         }
          @Override         public Socket createSocket(final InetAddress host, final int port, final InetAddress localAddress,                                    final int localPort) throws                 IOException {             final Socket underlyingSocket = delegate.createSocket(host, port, localAddress, localPort);             return overrideProtocol(underlyingSocket);         }
          private Socket overrideProtocol(final Socket socket) {             if (!(socket instanceof SSLSocket)) {                 throw new RuntimeException("An instance of SSLSocket is expected");             }             ((SSLSocket) socket).setEnabledProtocols(new String[]{"TLSv1"});             return socket;         }     }
  |