title: Connection Reset Error - REST service client
body: <p>I'm getting Connection Reset error with the following code. What exactly is wrong with it that's causing connection resets? Is it because of the way I'm trying to ignore SSL cert validation? </p>
  
  <pre><code>String serviceUri = "https://service.providers.com/applications";
  String reqJson = "request json string";
  
  //this is to ignore SSL validation.
  SSLContextBuilder builder = new SSLContextBuilder();
  builder.loadTrustMaterial(null, new TrustStrategy() {
      @Override
      public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
          return true;
      }
  });
  
  SSLConnectionSocketFactory sslSF = new SSLConnectionSocketFactory(builder.build(),
          SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  
  
  CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslSF).build();;
  HttpPost postRequest = new HttpPost(serviceUri);
  
  StringEntity input = new StringEntity(reqJson);
  input.setContentType("application/json");
  postRequest.setEntity(input);
  
  CloseableHttpResponse response = httpClient.execute(postRequest);
  
  try {
      //do some stuff
      ///
  
      //make sure you consume the entire response
      HttpEntity entity = response.getEntity();
      EntityUtils.consume(entity);
  
  } catch (IllegalStateException e) {
      e.printStackTrace();
  }finally{
      response.close();
  }
  </code></pre>
  
  <p>Stack trace</p>
  
  <blockquote>
    <p>java.net.SocketException: Connection reset    at
    java.net.SocketInputStream.read(SocketInputStream.java:179)   at
    com.ibm.jsse2.a.a(a.java:148)     at com.ibm.jsse2.a.a(a.java:96)     at
    com.ibm.jsse2.tc.a(tc.java:302)   at com.ibm.jsse2.tc.g(tc.java:208)
      at com.ibm.jsse2.tc.a(tc.java:482)  at
    com.ibm.jsse2.tc.startHandshake(tc.java:597)  at
    org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)
      at
    org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)
      at
    org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:117)
      at
    org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
      at
    org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
      at
    org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
      at
    org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
      at
    org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
      at
    org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
      at
    org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
      at
    org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
      at
    org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)</p>
  </blockquote>