2012-03-14 33 views
5

Bit nhầm lẫn về những gì thực sự có thể có ở đây.Chuỗi proxy trong Apache HTTP

Máy chủ proxy Apache HTTP Client (4.x) có được không? Bất kỳ lời khuyên nào về cách thức?

Tôi đã tìm thấy documentation suggesting it can nhưng nguồn là một chút phức tạp và tôi đã tìm thấy ít nhất một lớp (DefaultRequestDirector) mà ném một ngoại lệ;

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

Đó là thẳng về phía trước để cấu hình một khách hàng với một proxy đơn sử dụng

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

nhưng nó không rõ ràng cho tôi làm thế nào để thiết lập một chuỗi các proxy. Nếu tôi làm theo các gợi ý trên tài liệu trên tôi làm như sau.

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

nhưng điều đó gây ra ngoại lệ được đề cập ở trên;

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

Bạn đã hỏi trong danh sách gửi thư chưa? http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/ – artbristol

+0

không! cảm ơn, tốt điểm: D – Toby

Trả lời

-1

Trong tài liệu hướng dẫn bạn liên kết đến trên nó nói:

QUOTE 2.7. Cấu hình proxy HttpClient Mặc dù HttpClient nhận thức được các định tuyến phức tạp và chuỗi proxy, nhưng nó chỉ hỗ trợ các kết nối proxy trực tiếp hoặc một hop đơn giản ngoài hộp. UNQUOTE

Vì vậy, câu trả lời nằm ngoài hộp, nó không thể xử lý chuỗi proxy.

+1

Nếu bạn nhìn vào các ý kiến ​​trong mã mặc dù, một nhà phát triển đã vạch ra những gì có thể được thực hiện. Vì vậy, tôi không nghĩ rằng nó đơn giản như 'nó không hỗ trợ nó' và câu hỏi của tôi là làm thế nào để ép buộc nó. – Toby