java proxy apache-httpclient-4.x

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();