apache httpclient proxy authentication
To authenticate with a proxy server using Apache HttpClient, you can use the CredentialsProvider
interface to supply the necessary authentication credentials. Here's an example that demonstrates how to use Basic Authentication with a proxy server:
import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.DefaultProxyRoutePlanner; import org.apache.http.util.EntityUtils; public class HttpClientExample { public static void main(String[] args) throws Exception { HttpHost proxy = new HttpHost("proxy.example.com", 8080); DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy); String proxyUsername = "proxyuser"; String proxyPassword = "proxypassword"; CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(proxyUsername, proxyPassword)); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultCredentialsProvider(credentialsProvider) .setRoutePlanner(routePlanner) .build(); HttpGet httpGet = new HttpGet("http://www.example.com"); String responseBody = EntityUtils.toString(httpClient.execute(httpGet).getEntity()); System.out.println(responseBody); } }
In this example, we first create an instance of HttpHost
that represents the proxy server and configure it with the proxy host name and port number. We then create an instance of DefaultProxyRoutePlanner
using the HttpHost
object, and set it as the route planner for the CloseableHttpClient
object using the setRoutePlanner()
method. Next, we create an instance of CredentialsProvider
and set it to use Basic Authentication with the proxy server. We then set the CredentialsProvider
on the CloseableHttpClient
object using the setDefaultCredentialsProvider()
method. Finally, we execute an HTTP GET request using the CloseableHttpClient
object, and extract the response body using the EntityUtils
class.
Note that this example demonstrates how to use Basic Authentication with a single username and password. For more complex authentication scenarios, such as using different credentials for different proxy servers, you may need to use more advanced authentication techniques, such as Digest Authentication or NTLM Authentication. You can find more information about these techniques in the Apache HttpClient documentation.