您可以创建自己的HttpRoutePlanner实现,该实现将允许更改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
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));


