title: javax.net.ssl.SSLHandshakeException: Connection closed by peer at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
body: <h2>before api level 24 my code is working fine but it is giving me error on api level 24( 7.0 Nougat). I am not getting what's going wrong with my code.</h2>
  
  <p>First Approach is here :</p>
  
  <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;network-security-config&gt;
     &lt;base-config&gt; &lt;trust-anchors&gt; &lt;certificates src="system"/&gt;
     &lt;certificates src="user"/&gt; &lt;/trust-anchors&gt; &lt;/base-config&gt;
     &lt;domain-config&gt; &lt;domain includeSubdomains="true"&gt;xyz.com&lt;/domain&gt;
     &lt;trust-anchors&gt; &lt;certificates src="@raw/my_ca"/&gt; &lt;/trust-anchors&gt;
     &lt;/domain-config&gt; &lt;/network-security-config&gt;
  </code></pre>
  
  <p>Inside manifest file : </p>
  
  <p><code>android:network Security Config = "@xml/network_security_config"</code>
  I have included <code>network_security_config</code> inside <code>res/xml/network_security_config</code> and <code>ca</code> certificate is inside <code>res/raw/my_ca.pem</code></p>
  
  <p>Second Approach is here :</p>
  
  <pre><code> import org.apache.http.client.HttpClient; 
   import org.apache.http.conn.ClientConnectionManager;  
   import org.apache.http.conn.scheme.Scheme; 
   import org.apache.http.conn.scheme.SchemeRegistry; 
   import org.apache.http.conn.ssl.SSLSocketFactory; 
   import org.apache.http.impl.client.DefaultHttpClient; 
   import java.io.IOException; import java.net.Socket; 
   import java.net.UnknownHostException; 
   import java.security.KeyManagementException; 
   import java.security.KeyStore;
   import java.security.KeyStoreException; 
   import java.security.NoSuchAlgorithmException; 
   import java.security.UnrecoverableKeyException; 
   import java.security.cert.CertificateException; 
   import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext;
   import javax.net.ssl.TrustManager; 
   import javax.net.ssl.X509TrustManager; 
      public class ExSSLSocketFactory extends SSLSocketFactory { 
        SSLContext sslContext = SSLContext.getInstance("TLS"); 
        public ExSSLSocketFactory(KeyStore truststore) throws 
           NoSuchAlgorithmException, KeyManagementException,KeyStoreException,
           UnrecoverableKeyException {
           super(truststore);
       TrustManager x509TrustManager = new X509TrustManager() { 
       public void checkClientTrusted(X509Certificate[] chain, String authType)  
       throws CertificateException {
       } public void checkServerTrusted(X509Certificate[] chain, String authType)    
       throws CertificateException {
        } public X509Certificate[] getAcceptedIssuers()
       { 
  return null; 
  } 
  }; 
  sslContext.init(null, new TrustManager[] {
       x509TrustManager }, null);
   } public ExSSLSocketFactory(SSLContext
       context) throws KeyManagementException, NoSuchAlgorithmException,
       KeyStoreException, UnrecoverableKeyException {
   super(null); 
  sslContext = context; 
  } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException,
       UnknownHostException {
   return sslContext.getSocketFactory().createSocket(socket, host, port,
       autoClose); 
  } @Override public Socket createSocket() throws
       IOException {
   return sslContext.getSocketFactory().createSocket(); 
  }
       public static HttpClient getHttpsClient(HttpClient client) { 
  try{
       X509TrustManager x509TrustManager = new 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 null; 
  }
   }; 
  SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new
       TrustManager[]{x509TrustManager}, null); SSLSocketFactory
       sslSocketFactory = new ExSSLSocketFactory(sslContext);
       sslSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
       ClientConnectionManager clientConnectionManager =
       client.getConnectionManager(); SchemeRegistry schemeRegistry =
       clientConnectionManager.getSchemeRegistry();
       schemeRegistry.register(new Scheme("https", sslSocketFactory, 443));
       return new DefaultHttpClient(clientConnectionManager,
       client.getParams()); 
  } catch (Exception ex) 
  { return null; 
  } } }
  </code></pre>
  
  <p>While making http connection :</p>
  
  <pre><code>public String CallWebService(String url, String soapAction, String envelope){
  
  
  final HttpClient httpClient = ExSSLSocketFactory.getHttpsClient(new DefaultHttpClient());
      HttpParams params = httpClient.getParams();
      HttpConnectionParams.setConnectionTimeout(params, 150000);
      HttpConnectionParams.setSoTimeout(params, 150000);
      HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), true);
      HttpPost httppost = new HttpPost(url);
      httppost.setHeader("soapaction", soapAction);
      httppost.setHeader("Content-Type", "text/xml; charset=utf-8");
  
      String responseString = "";
      try
      {
          HttpEntity entity = new StringEntity(envelope);
          httppost.setEntity(entity);
          ResponseHandler&lt;String&gt; rh = new ResponseHandler&lt;String&gt;()
          {
  
              public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException
              {
  
                  HttpEntity entity = response.getEntity();
                  StringBuffer out = new StringBuffer();
                  byte[] b = EntityUtils.toByteArray(entity);
                  out.append(new String(b, 0, b.length));
                  return out.toString();
              }
          };
  
          responseString = httpClient.execute(httppost, rh);
          Log.d("Response is here....", "responseString :  " + responseString);
      }
      catch (Exception e)
      {
          e.printStackTrace();
      }
  
      // close the connection
      httpClient.getConnectionManager().shutdown();
      return responseString;
  }
  </code></pre>
  
  <p>Still I am getting error:</p>
  
  <blockquote>
    <p>javax.net.ssl.SSLHandshakeException: Connection closed by peer 01-24
    10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:     at
    com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
    01-24 10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
    01-24 10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:<br>
    at com.android.okhttp.Connection.connectTls(Connection.java:235) 01-24
    10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:     at
    com.android.okhttp.Connection.connectSocket(Connection.java:199) 01-24
    10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:     at
    com.android.okhttp.Connection.connect(Connection.java:172) 01-24
    10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:     at
    com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
    01-24 10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
    01-24 10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329)
    01-24 10:28:03.182 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
    01-24 10:28:03.183 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
    01-24 10:28:03.183 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
    01-24 10:28:03.183 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
    01-24 10:28:03.184 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java)
    01-24 10:28:03.184 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46)
    01-24 10:28:03.184 32251-474/com.neosoft.meconnect W/System.err:<br>
    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68)
    01-24 10:28:03.184 32251-474/com.neosoft.meconnect W/System.err:<br>
    at srd.gshelp.GSSoapConWSDL.javaHit(GSSoapConWSDL.java:180) 01-24
    10:28:03.184 32251-474/com.neosoft.meconnect W/System.err:     at
    srd.gshelp.GSSoapConWSDL.access$0(GSSoapConWSDL.java:144) 01-24
    10:28:03.185 32251-474/com.neosoft.meconnect W/System.err:     at
    srd.gshelp.GSSoapConWSDL$TaskAsync.doInBackground(GSSoapConWSDL.java:215)
    01-24 10:28:03.185 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    srd.gshelp.GSSoapConWSDL$TaskAsync.doInBackground(GSSoapConWSDL.java:1)
    01-24 10:28:03.185 32251-474/com.neosoft.meconnect W/System.err:<br>
    at android.os.AsyncTask$2.call(AsyncTask.java:304) 01-24 10:28:03.185
    32251-474/com.neosoft.meconnect W/System.err:     at
    java.util.concurrent.FutureTask.run(FutureTask.java:237) 01-24
    10:28:03.186 32251-474/com.neosoft.meconnect W/System.err:     at
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    01-24 10:28:03.186 32251-474/com.neosoft.meconnect W/System.err:<br>
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    01-24 10:28:03.186 32251-474/com.neosoft.meconnect W/System.err:<br>
    at java.lang.Thread.run(Thread.java:761) 01-24 10:28:03.187
    32251-474/com.neosoft.meconnect W/System.err:     Suppressed:
    javax.net.ssl.SSLHandshakeException: Connection closed by peer</p>
  </blockquote>
  
  <p>Kindly help.
  Thanks in Advance.</p>