Apache HttpClient 4.3.5设置代理 [英] Apache HttpClient 4.3.5 set proxy

查看:117
本文介绍了Apache HttpClient 4.3.5设置代理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我用以下方法构造新的HttpClient时,我似乎可以指定代理:

It seems that I can specify the proxy when I construct new HttpClient with:

HttpHost proxy = new HttpHost("someproxy", 8080);
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();

取自 http://hc.apache. org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d5e475

是否可以修改现有客户端的代理设置.

Is it possible to modify existing client's proxy settings.

推荐答案

您可以创建自己的HttpRoutePlanner实现,该实现将允许更改HttpHost.

You can create your own implementation of HttpRoutePlanner that will allow change of the HttpHost.

public class DynamicProxyRoutePlanner implements HttpRoutePlanner {

    private DefaultProxyRoutePlanner defaultProxyRoutePlanner = null;

    public DynamicProxyRoutePlanner(HttpHost host){
        defaultProxyRoutePlanner = new DefaultProxyRoutePlanner(host);
    }

    public void setProxy(HttpHost host){
        defaultProxyRoutePlanner = new DefaultProxyRoutePlanner(host);
    }

    public HttpRoute determineRoute(HttpHost target, HttpRequest request, HttpContext context) {
        return defaultProxyRoutePlanner.determineRoute(target,request,context); 
    }
}

然后,您可以在代码中使用此DynamicProxyRoutePlanner

Then you can use this DynamicProxyRoutePlanner in your code

HttpHost proxy = new HttpHost("someproxy", 8080);
DynamicProxyRoutePlanner routePlanner = new DynamicProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();

//Any time change the proxy 
routePlanner.setProxy(new HttpHost("someNewProxy", 9090));

这篇关于Apache HttpClient 4.3.5设置代理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆