I have inherited the code
import org.apache.http.client.HttpClient; ... HttpClient httpclient = createHttpClientOrProxy(); try { HttpPost postRequest = postRequest(data, url); body = readResponseIntoBody(body, httpclient, postRequest); } catch( IOException ioe ) { throw new RuntimeException("Cannot post/read", ioe); } finally { httpclient.getConnectionManager().shutdown(); // ** Deprecated } private HttpClient createHttpClientOrProxy() { HttpClient httpclient = new DefaultHttpClient(); /* * Set an HTTP proxy if it is specified in system properties. * * http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html * http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientExecuteProxy.java */ if( isSet(System.getProperty("http.proxyHost")) ) { log.warn("http.proxyHost = " + System.getProperty("http.proxyHost") ); log.warn("http.proxyPort = " + System.getProperty("http.proxyPort")); int port = 80; if( isSet(System.getProperty("http.proxyPort")) ) { port = Integer.parseInt(System.getProperty("http.proxyPort")); } HttpHost proxy = new HttpHost(System.getProperty("http.proxyHost"), port, "http"); // @Deprecated methods here... getParams() and ConnRoutePNames httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); } return httpclient; }
getConnectionManager()
reads "
@Deprecated ClientConnectionManager getConnectionManager() Deprecated. (4.3) use HttpClientBuilder. Obtains the connection manager used by this client.
The docs for HttpClientBuilder seem sparse and simply say:
Builder for CloseableHttpClient instances.
However if I replace HttpClient
with CloseableHttpClient
the method still seems @Deprecated
.
How can I use a non-Deprecated method?
From Apache HTTP Client API version 4.3 on wards, DefaultHttpClient is deprecated.
If you are processing HTTP responses manually instead of using a response handler, you need to close all the http connections by yourself.
HttpClient is fully thread-safe when used with a thread-safe connection manager such as MultiThreadedHttpConnectionManager.
Http client is a transfer library. It resides on the client side, sends and receives Http messages. It provides up to date, feature-rich, and an efficient implementation which meets the recent Http standards.
Instead of creating a new instance of HttpClient
, use the Builder. You would get a CloseableHttpClient
.
e.g usage:
CloseableHttpClient httpClient = HttpClientBuilder.create().setProxy(proxy).build()
Instead of using getConnectionManager().shutdown()
, use the close()
method instead on CloseableHttpClient
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With