Hi,
I am using a proxy to connect to a web service. Both proxy and web service
are secured with different set of credentials. I am trying to perform a GET
request using Apache HttpClient 4.3.1.
URI proxyUri = URI.create("http://localhost:9000");
URI targetUri = URI.create("http://localhost:8080");
final HttpHost proxyHost = new HttpHost(proxyUri.getHost(),
proxyUri.getPort(), proxyUri.getScheme());
final HttpHost targetHost = new HttpHost(targetUri.getHost(),
targetUri.getPort(), targetUri.getScheme());
CredentialsProvider proxyCredentials = new BasicCredentialsProvider();
proxyCredentials.setCredentials(
new AuthScope(proxyUri.getHost(), proxyUri.getPort()),
new UsernamePasswordCredentials("joe", "secret")
);
CredentialsProvider serviceCredentials = new BasicCredentialsProvider();
serviceCredentials.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("user", "password"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(serviceCredentials).build();// this
sets only service creds
It looks like you can set only one set of credentials at any time. I could
not set both on the client. I tried something like this, but it would not
allow me to set proxy credentials on the request config.
RequestConfig config =
RequestConfig.custom().setProxy(proxyHost).build();
HttpGet httpGet = new HttpGet("/");
httpGet.setConfig(config);
System.out.println("executing request to " + targetHost + " via " +
proxyHost);
CloseableHttpResponse response = httpclient.execute(targetHost,
httpGet);
How can I use both of these credentials on the client? Is this supported?
Thanks!
Arul