Java apachehttp中的代理链

Java apachehttp中的代理链,java,apache-httpcomponents,Java,Apache Httpcomponents,对这里的实际可能性有点困惑 JavaApacheHTTP客户端(4.x)可以链接代理吗?有什么建议吗? 我发现了,但是源代码有点复杂,我发现至少有一个类(DefaultRequestDirector)抛出异常 throw new HttpException("Proxy chains are not supported.") 使用一个单独的代理来配置客户端是很简单的 httpclient.getParams().setParameter(ConnRoutePNames.DEFA

对这里的实际可能性有点困惑

JavaApacheHTTP客户端(4.x)可以链接代理吗?有什么建议吗?

我发现了,但是源代码有点复杂,我发现至少有一个类(
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

在您链接到上面的文档中,它表示:

引述 2.7. HttpClient代理配置 尽管HttpClient知道复杂的路由选择和代理链接,但它只支持简单的直接或单跳代理连接。 取消报价


因此,答案是开箱即用的,它无法处理代理链。

您在邮件列表中询问过吗?您好@Toby,有趣的用例,如果您已经找到了解决方案,您是否可以添加一个解决方案如果您查看代码中的注释,开发人员已经概述了可以做什么。所以我不认为它像“它不支持它”那么简单,我的问题是如何强迫它。