Comment utiliser l’authentification proxy avec le client Jersey et Apache Http?

J’utilise le client jersey avec ApacheConnection Provider.

Builder builder = RequestConfig.custom().setConnectTimeout(timeout); List 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); 

Mais comment append un nom d’utilisateur et un mot de passe pour l’authentification par proxy?

Il semblerait que le fournisseur de connexions apache n’utilise pas les mécanismes de sélection de proxy java standard.

J’ai finalement trouvé la solution par moi-même. Malheureusement, cela n’est documenté nulle part:

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

Je pense que vous devriez append quelques lignes de code supplémentaires

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

sinon, il n’authentifiera pas vraiment l’hôte proxy que je ressens. Dans votre cas, il pourrait être en train de contourner le proxy. ?