java - ¿Cómo sustituyo httpClient.getParams() obsoleto con RequestConfig?
proxy apache-httpclient-4.x (2)
Está utilizando la biblioteca de apache HttpClient 4.3 con el código de apache HttpClient 4.2.
Tenga en cuenta que getParams () y ConnRoutePNames no son los únicos métodos en desuso en su caso. La propia clase DefaultHttpClient se basa en la implementación 4.2 y también está en desuso en 4.3.
Con respecto a la documentación 4.3 aquí ( http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/connmgmt.html#d5e473 ), puede reescribirla de esta manera:
private HttpClient createHttpClientOrProxy() {
HttpClientBuilder hcBuilder = HttpClients.custom();
// Set HTTP proxy, if specified in system properties
if( isSet(System.getProperty("http.proxyHost")) ) {
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");
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
hcBuilder.setRoutePlanner(routePlanner);
}
CloseableHttpClient httpClient = hcBuilder.build();
return httpClient;
}
He heredado el codigo
import org.apache.http.client.HttpClient;
...
HttpClient httpclient = createHttpClientOrProxy();
...
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")) ) {
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;
}
httpClient.getParams()
está @Deprecated y lee "
HttpParams getParams()
Deprecated.
(4.3) use RequestConfig.
No hay documentos de clase para RequestConfig y no sé qué método se debe utilizar para reemplazar getParams()
y ConnRoutePNames.DEFAULT_PROXY
.
Esto es más como un seguimiento a la respuesta dada por @Stephane Lallemagne
Hay una manera muy concisa de hacer que HttpClient seleccione la configuración del proxy
CloseableHttpClient client = HttpClients.custom()
.setRoutePlanner(
new SystemDefaultRoutePlanner(ProxySelector.getDefault()))
.build();
o esto si desea una instancia de HttpClient totalmente configurada con los valores predeterminados del sistema
CloseableHttpClient client = HttpClients.createSystem();