hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anjum Naseer <tpan...@hotmail.com>
Subject Using HTTP Basic Authentication with htmlunit/httpclient and more than one browser instance fails
Date Mon, 02 Feb 2009 22:40:52 GMT

I am using htmlunit v2.4 (which in turn uses httpclient v3.1) and am 
having problems with testing HTTP Basic Authentication against my 
REST-based web service using two types of browsers.

I am creating my two browsers and credentials as follows:
   final WebClient xhtmlBrowser = new WebClient(BrowserVersion.FIREFOX_2);
   xhtmlBrowser.addRequestHeader("ACCEPT", 
"text/html,application/xhtml+xml");
   xhtmlBrowser.setRedirectEnabled(true);
   xhtmlBrowser.setUseInsecureSSL(true);

   final WebClient jsonBrowser = new WebClient();
   jsonBrowser.addRequestHeader("ACCEPT", "application/json");
   jsonBrowser.setRedirectEnabled(true);
   jsonBrowser.setUseInsecureSSL(true);

   final DefaultCredentialsProvider userCredentials = new 
DefaultCredentialsProvider();
   userCredentials.addCredentials("someName", "somePassword");

I then browse to my web service using code like this:
   xhtmlBrowser.setCredentialsProvider(userCredentials);
   final WebResponse xhtmlResponse = 
xhtmlBrowser.getPage("http://...").getWebResponse();
   ...
   jsonBrowser.setCredentialsProvider(userCredentials);
   final WebResponse jsonResponse = 
jsonBrowser.getPage("http://...").getWebResponse();
   ...

My web service redirects to an HTTPS URI and requires HTTP Basic 
Authentication (I am using Suns Jersey product 
(https://jersey.dev.java.net/) to write my REST-based Web Service).

The first response (xhtmlResponse) comes back all fine and I can process 
and check that the response is as I expected.
However, the second response (jsonResponse) fails with:
   ...
   ... org.apache.commons.httpclient.auth.AuthChallengeProcessor 
selectAuthScheme
   INFO: basic authentication scheme selected
   ... org.apache.commons.httpclient.HttpMethodDirector 
processWWWAuthChallenge
   INFO: No credentials available for BASIC 'SmartInspector'@localhost:8181
   ... com.gargoylesoftware.htmlunit.WebClient printContentIfNecessary
   INFO: statusCode=[401] contentType=[text/html]
   ... com.gargoylesoftware.htmlunit.WebClient printContentIfNecessary
   ... HTTP Status 401 - An Authentication object was not found in the 
SecurityContext
   ... This request requires HTTP authentication (An Authentication 
object was not found in the SecurityContext).
   ... Sun Java System Application Server 9.1_02

If I comment out the first request like so:
   // xhtmlBrowser.setCredentialsProvider(userCredentials);
   // final WebResponse xhtmlResponse =
   xhtmlBrowser.getPage("http://...").getWebResponse();
   // ...
   jsonBrowser.setCredentialsProvider(userCredentials);
   final WebResponse jsonResponse =
   jsonBrowser.getPage("http://...").getWebResponse();
   ...

Then the second (jsonResponse) request works just fine. I actually have 
a list of four different types of browsers that I iterate through to 
test that my
service works against all of them, but I have simplified the example to 
illustrate the problem.

I get the same problem even if I directly browse to "https://..." 
thereby avoiding the redirect from http to https by my service.

Is there some cleanup step between the two getWebResponse() calls that I 
am missing or is this a bug in httpclient?

Thanks in advance,

Anjum.


_________________________________________________________________
Check out the new and improved services from Windows Live. Learn more! 
http://clk.atdmt.com/UKM/go/132630768/direct/01/
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message