title: Setting time out in apache http client
body: <p>I'm using Apache http client 4.3.2 to send get requests. What I have done is:</p>
  
  <pre><code>private final RequestConfig requestConfig = RequestConfig.custom()
          .setConnectTimeout(1000)
          .setConnectionRequestTimeout(1000)
          .setSocketTimeout(1000)
          .build();
  private final HttpClient client = HttpClientBuilder.create()
          .disableAuthCaching()
          .disableAutomaticRetries()
          .disableConnectionState()
          .disableContentCompression()
          .disableCookieManagement()
          .disableRedirectHandling()
          .setDefaultRequestConfig(requestConfig)
          .build(); 
  </code></pre>
  
  <p>And when sending request:</p>
  
  <pre><code>HttpGet request = null;
  
  try {
      request = new HttpGet(url);
      if (client.execute(request).getStatusLine().getStatusCode() == 200) {
          /* do some work here */
      }
  } catch (Exception e) {
      Logger.error(e);
  } finally {
      if (request != null) {
          request.releaseConnection();
      }
  }
  </code></pre>
  
  <p>But some of my requests still takes long time to timeout. This is stack trace of exception:</p>
  
  <pre><code>java.net.SocketTimeoutException: Read timed out
      at java.net.SocketInputStream.socketRead0(Native Method)
      at java.net.SocketInputStream.read(SocketInputStream.java:152)
      at java.net.SocketInputStream.read(SocketInputStream.java:122)
      at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:136)
      at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:152)
      at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:270)
      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
      at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
      at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:260)
      at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:161)
      at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.apache.http.impl.conn.CPoolProxy.invoke(CPoolProxy.java:138)
      at com.sun.proxy.$Proxy0.receiveResponseHeader(Unknown Source)
      at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:271)
      at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
      at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:254)
      at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
      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)
      at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
  </code></pre>
  
  <p>Is there any other time out value I should set? What am I doing wrong?</p>