不推荐使用 httpClient.getConnectionManager() - 应该使用什么代替? [英] httpClient.getConnectionManager() is deprecated - what should be used instead?
问题描述
我继承了代码
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()
读取
@Deprecated
ClientConnectionManager getConnectionManager()
Deprecated. (4.3) use HttpClientBuilder.
Obtains the connection manager used by this client.
HttpClientBuilder 的文档似乎很少,简单地说:
The docs for HttpClientBuilder seem sparse and simply say:
Builder for CloseableHttpClient instances.
但是,如果我将 HttpClient
替换为 CloseableHttpClient
,该方法仍然看起来是 @Deprecated
.
However if I replace HttpClient
with CloseableHttpClient
the method still seems @Deprecated
.
如何使用未弃用的方法?
How can I use a non-Deprecated method?
推荐答案
不要创建 HttpClient
的新实例,而是使用 Builder.你会得到一个 CloseableHttpClient
.
Instead of creating a new instance of HttpClient
, use the Builder. You would get a CloseableHttpClient
.
例如用法:
CloseableHttpClient httpClient = HttpClientBuilder.create().setProxy(proxy).build()
不要使用 getConnectionManager().shutdown()
,而是在 CloseableHttpClient
上使用 close()
方法.
Instead of using getConnectionManager().shutdown()
, use the close()
method instead on CloseableHttpClient
.
这篇关于不推荐使用 httpClient.getConnectionManager() - 应该使用什么代替?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!