【问题标题】:How to use Proxy authentication with Jersey and Apache Http client?如何将代理身份验证与 Jersey 和 Apache Http 客户端一起使用?
【发布时间】:2016-04-28 08:21:54
【问题描述】:

我正在使用带有 ApacheConnection Provider 的 jersey 客户端。

    Builder builder = RequestConfig.custom().setConnectTimeout(timeout);
    List<Proxy> proxies = ProxyManager.getInstance().select(baseUrl.toURI());
    if (useProxy) {
        ...
        builder.setProxy(new HttpHost(proxyUri.getHost(), proxyUri.getPort()));
    }
    RequestConfig requestConfig = builder.build();

    final ClientConfig clientConfig = new ClientConfig();
    clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, requestConfig);
    clientConfig.connectorProvider(new ApacheConnectorProvider());

    client = ClientBuilder.newBuilder().withConfig(clientConfig).sslContext(getSSLContext()).build();
    client.property(ClientProperties.CONNECT_TIMEOUT, 5000);

但是如何为代理认证添加用户名和密码呢?

似乎 apache 连接提供程序不使用标准的 java 代理选择器机制。

【问题讨论】:

  • 你可以使用DefaultProxyRoutePlanner:DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(new HttpHost(&lt;your_proxy_host&gt;, &lt;port&gt;));。然后设置客户的路线规划器:HttpClient client = HttpClients.custom().setRoutePlanner(routePlanner).build();.
  • 但是在哪里设置用户名和密码呢?
  • 为此,看看这个答案:stackoverflow.com/a/36907908/1346996
  • 我认为无法将其应用于球衣场景。我只有requestConfig,似乎没有办法操作httpclient
  • 你是对的。该链接不适用于您的需求。那就看看我的回答吧。

标签: java apache proxy jersey


【解决方案1】:

我终于自己找到了解决方案。不幸的是,这在任何地方都没有记录:

HttpHost proxyhost = new HttpHost(host,pw);

CredentialsProvider credsProvider = new BasicCredentialsProvider();

credsProvider.setCredentials(new AuthScope(proxyhost), new UsernamePasswordCredentials(user, pw));
clientConfig.property(ApacheClientProperties.CREDENTIALS_PROVIDER, credsProvider);

builder.setProxy(proxyhost);

【讨论】:

    【解决方案2】:

    我认为你应该再添加几行代码

    builder.setProxy(proxyhost).setDefaultCredentialsProvider(credsProvider)
                                .setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
    

    否则它不会真正验证我感觉的代理主机。在您的情况下,它可能会绕过代理。 ?

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 2022-06-23
      相关资源
      最近更新 更多