当前位置: 首页 > 知识库问答 >
问题:

Apache HttpClient 4.3.5设置代理

翟淇
2023-03-14

似乎我可以在构建新的HttpClient时指定代理:

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

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

共有1个答案

景阳曜
2023-03-14

您可以创建自己的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); 
    }
}

然后您可以在代码中使用DynamicProxy RoutePlanner

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));
 类似资料:
  • 问题内容: 我已经制作了一个android应用https://play.google.com/store/apps/details?id=com.confesco.maggi ,它可以将Firebase用作数据库,在使用3G网络时效果很好。在我们学院的代理下,它没有连接到数据库。有什么办法可以解决这个问题。谢谢。 问题答案: 很抱歉,目前尚无通过代理使用Android客户端的解决方法。我已将其放在

  • 本文向大家介绍jenkins 设置Nginx代理,包括了jenkins 设置Nginx代理的使用技巧和注意事项,需要的朋友参考一下 示例 Jenkins在本地运行在端口8080上。我们可以从端口80-> 8080建立代理,因此可以通过以下方式访问Jenkins: 而不是默认值 首先安装Nginx。 sudo aptitude -y install nginx 删除Nginx的默认设置 cd /et

  • 我在Windows7上安装了Spring boot CLI,但我使用的是代理。我想知道如何配置代理与Spring Boot。我用-dhttp.proxyhost=proxyhostURL和-dhttp.proxyport=proxyportnumber设置了变量JAVA_OPTS,但在命令“spring run myscript.groovy”之后,我收到了消息:“startup failed:G

  • When running an Express app behind a proxy, set (by using app.set()) the application variable trust proxy to one of the values listed in the following table. Although the app will not fail to run if t

  • 问题内容: 看来我可以在构造new时指定代理: 取自http://hc.apache.org/httpcomponents-client- ga/tutorial/html/connmgmt.html#d5e475 是否可以修改现有客户端的代理设置。 问题答案: 您可以创建自己的HttpRoutePlanner实现,该实现将允许更改HttpHost。 然后,您可以在代码中使用此DynamicPro

  • 问题内容: 有什么方法可以简单地为gradle设置全局的,系统范围的代理? 是的,我知道 当前 文件中有.etc设置,但它仅在实际项目中有效。但 __ 我不会在每个gradle项目中都进行设置 而且由于我的本地网络配置,我不会更改项目的源代码。 那么,是否有任何“ global gradle.properties”文件? 问题答案: 是的,似乎有可能。见这里,尤其是: 我们可以定义一个文件并在该文