Commons Http Client is a HTTP agent implementation in java supporting
client-side authentication, HTTP state management and HTTP connection management.
This requires the libraries httpclient-4.1.2.jar, httpcore-4.1.2.jar,
httpmime-4.1.2.jar, httpclient-cache-4.1.2.jar, commons-codec.jar and
commons-logging-1.1.1.jar to be in classpath.
The following example shows how to access a JSP page protected through basic authentication in Tomcat v6.0.
Configure a new tomcat user venakat and role btc in tomcat-users.xml as shown below,
A simple Http Client to access the protected JSP. We can see that the basic authentiction
information is passed as request header in the format Authorization : Basic Base64(username:password)
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost targetHost = new HttpHost("localhost", 8080);
HttpGet httpget = new HttpGet("http://localhost:8080/HTTP_TEST_APP/basic_protected.jsp");
System.out.println("Requesting : " + httpget.getURI());
try {
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("venkat", "mypassword");
AuthScope authscope = new AuthScope(targetHost.getHostName(), targetHost.getPort());
httpclient.getCredentialsProvider().setCredentials(authscope, credentials);
//Create Authentication Cache
AuthCache authCache = new BasicAuthCache();
authCache.put(targetHost, new BasicScheme());
//Add AuthCache to the execution context
BasicHttpContext localcontext = new BasicHttpContext();
localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache);
for (int i = 0 ; i < 2 ; i ++) {
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(targetHost, httpget, responseHandler, localcontext);
System.out.println("\n=========== RESPONSE ======== " + responseBody);
}