2012-03-14 15 views
5

Poco confundido acerca de lo que es realmente posible aquí.Cadena proxy en Apache HTTP

¿Pueden los proxys de cadena Java Apache HTTP Client (4.x)? ¿Algún consejo sobre cómo?

He encontrado documentation suggesting it can pero la fuente es un poco complicada y he encontrado al menos una clase (DefaultRequestDirector) que arroja una excepción;

throw new HttpException("Proxy chains are not supported.") 

Es sencillo para configurar un cliente con un único proxy utilizando

httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

pero no es obvio para mí cómo configurar una cadena de proxies. Si sigo las sugerencias de la documentación anterior, hago lo siguiente.

httpClient.setRoutePlanner(new HttpRoutePlanner() { 
     @Override 
     public HttpRoute determineRoute(HttpHost target, HttpRequest request, HttpContext context) throws HttpException { 
      return new HttpRoute(target, null, new HttpHost[]{proxy, new HttpHost("localhost", 8081)}, "https".equalsIgnoreCase(target.getSchemeName()), TunnelType.TUNNELLED, LayerType.PLAIN); 
     } 
    }); 

pero eso causa la excepción mencionada anteriormente;

org.apache.http.client.ClientProtocolException 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732) 
    at Main.main(Main.java:70) 
Caused by: org.apache.http.HttpException: Proxy chains are not supported. 
    at org.apache.http.impl.client.DefaultRequestDirector.createTunnelToProxy(DefaultRequestDirector.java:957) 
    at org.apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.java:764) 
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:579) 
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) 
    ... 8 more 
+0

¿Ha preguntado en la lista de correo? http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/ – artbristol

+0

¡no! gracias, buen punto: D – Toby

Respuesta

-1

En la documentación se vincula a por encima de ella dice:

CITA 2.7. Configuración del proxy de HttpClient Aunque HttpClient conoce los complejos esquemas de enrutamiento y el encadenamiento de proxy, solo admite conexiones proxy simples directas o de un salto desde el primer momento. UNQUOTE

Así que la respuesta está fuera de la caja, no puede manejar cadenas proxy.

+1

Sin embargo, si nos fijamos en los comentarios en el código, un desarrollador ha delineado lo que podría hacerse. Así que no creo que sea tan simple como "no lo admite" y mi pregunta es cómo coaccionarlo. – Toby