2016-04-28 8 views
1

Ich benutze Jersey-Client mit ApacheConnection Provider.Wie Proxy-Authentifizierung mit Jersey und Apache Http Client verwenden?

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); 

Aber wie Benutzername und Passwort für Proxy-Authentifizierung hinzufügen?

Scheint wie Apache Connection Provider nicht die Standard-Java-Proxy-Selektor-Mechanismen verwenden.

+0

Sie 'DefaultProxyRoutePlanner' verwenden:' DefaultProxyRoutePlanner routenplaner = new DefaultProxyRoutePlanner (neu HttpHost (, )); '. Dann legen Sie den Routenplaner Ihres Kunden fest: 'HttpClient client = HttpClients.custom(). SetRoutePlanner (routePlanner) .build();'. – aribeiro

+0

Aber wo Benutzername und Passwort einstellen? – gorootde

+0

Dafür, werfen Sie einen Blick auf diese Antwort: http://StackOverflow.com/A/36907908/1346996. – aribeiro

Antwort

1

Endlich fand ich die Lösung alleine. Leider ist dies nirgends dokumentiert:

  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); 
Verwandte Themen