2012-03-14 3 views
5

Немного путайте о том, что на самом деле возможно здесь.Прокси-цепочка в Apache HTTP

Может ли прокси-сервер Java Apache HTTP Client (4.x)? Какие-нибудь советы о том, как?

Я нашел documentation suggesting it can, но источник немного сложный, и я нашел хотя бы один класс (DefaultRequestDirector), который генерирует исключение;

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

Это прямо вперед, чтобы настроить клиента с одного прокси-сервера с помощью

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

, но его не очевидно для меня, как настроить цепочку прокси-серверов. Если я следую подсказкам в документации выше, я делаю следующее.

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

, но это вызывает исключение, упомянутое выше;

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

Вы просили в списке рассылки? http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/ – artbristol

+0

нет! спасибо, хороший момент: D – Toby

ответ

-1

В документации вы ссылаетесь на над ней говорит:

QUOTE 2,7. Конфигурация прокси-сервера HttpClient Несмотря на то, что HttpClient знает сложные схемы маршрутизации и цепочку прокси-серверов, он поддерживает только простые прямые или однопроцессные прокси-соединения из коробки. UNQUOTE

Таким образом, ответ выходит из строя, он не может обрабатывать прокси-цепи.

+1

Если вы посмотрите на комментарии в коде, разработчик изложил, что можно сделать. Поэтому я не думаю, что это так просто, как «это не поддерживает», и мой вопрос заключается в том, как его принудить. – Toby

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