2013-12-20 3 views
20

Я унаследовал кодhttpClient.getConnectionManager() устарел - что следует использовать вместо этого?

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 кажется редкими и просто сказать:

Builder for CloseableHttpClient instances. 

Однако, если я заменю HttpClient с CloseableHttpClient метода все еще похоже @Deprecated.

Как использовать метод без устаревших данных?

+1

Что вы пытаетесь сделать? Получить «ClientConnectionManager»? Зачем? –

+0

Не могли бы вы разместить больше кода? Например, как инициализируется «httpClient». – ChristopherZ

+0

Я разместил код для создания HttpClient. Я не могу ответить «Почему», поскольку я не писал оригинальный код. –

ответ

30

Вместо создания нового экземпляра HttpClient используйте Builder. Вы получите CloseableHttpClient.

например использование:.

CloseableHttpClient httpClient = HttpClientBuilder.create().setProxy(proxy).build() 

Вместо использования getConnectionManager() отключение(), используйте метод Close() вместо этого на CloseableHttpClient.

Смежные вопросы