2016-04-28 32 views
1

ApacheConnection Providerでjerseyクライアントを使用しています。JerseyとApache Httpクライアントでプロキシ認証を使用するには?

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プロキシセレクタメカニズムを使用していないようです。

+0

あなたは 'DefaultProxyRoutePlanner'を使用することができます。次に、クライアントのルートプランナーを設定します。 'HttpClient client = HttpClients.custom()。setRoutePlanner(routePlanner).build();'。 – aribeiro

+0

しかし、どこのユーザー名とパスワードを設定するのですか? – gorootde

+0

そのために、この回答を見てください:http://stackoverflow.com/a/36907908/1346996。 – aribeiro

答えて

1

最終的に自分で解決策を見つけました。残念ながら、これはどこにも文書化されていない: `DefaultProxyRoutePlanner routePlanner =新しいDefaultProxyRoutePlanner(新HttpHost( ));`:

  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); 
関連する問題