嗨,我如何配置Apache HttpClient绕过本地地址的代理?

gal*_*ben 6 proxy apache-httpclient-4.x

我正在配置客户端,如下所示:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Run Code Online (Sandbox Code Playgroud)

现在,我想告诉我的客户不要使用代理"localhost"或127.0.0.1.

谢谢!

ok2*_*k2c 12

使用HttpClient 4.3 API

HttpHost proxy = new HttpHost("someproxy", 8080);
HttpRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy) {

    @Override
    public HttpRoute determineRoute(
            final HttpHost host,
            final HttpRequest request,
            final HttpContext context) throws HttpException {
        String hostname = host.getHostName();
        if (hostname.equals("127.0.0.1") || hostname.equalsIgnoreCase("localhost")) {
            // Return direct route
            return new HttpRoute(host);
        }
        return super.determineRoute(host, request, context);
    }
};
CloseableHttpClient client = HttpClients.custom()
        .setRoutePlanner(routePlanner)
        .build();
Run Code Online (Sandbox Code Playgroud)

  • 极好的!我正在尝试 `systemProperties.setProperty("http.nonProxyHosts", nonProxyHosts);` 但没有成功。谢谢。 (2认同)