I think that you were right, Oleg. The problem was that while doing the connection within B itself, the hostname was including a port number, and not otherwise :-(. Thanks so much for helping debug this! -Patricia
> -----Original Message----- > From: Oleg Kalnichevski [mailto:[email protected]] > Sent: Wednesday, June 24, 2009 9:48 AM > To: HttpClient User Discussion > Subject: Re: any suggestions as to what could be wrong here? > > On Wed, Jun 24, 2009 at 09:45:10AM -0500, Patricia Goldweic wrote: > > I'm afraid I AM using the hostname already - as extracted with > > URL.getHost()- (my use of "mydomain" in my code below was actually > > misleading). > > Essentially, I have no trouble using the exact same > code/credentials > > to communicate from server A to server B, but it fails only when > > communicate from B to itself (that is, from one servlet in > B, to another servlet in B). > > -Patricia > > > > I still suspect credentials cannot be found because the > hostname of host B and that of the AuthScope do not match. > > Oleg > > > > > > -----Original Message----- > > > From: Oleg Kalnichevski [mailto:[email protected]] > > > Sent: Wednesday, June 24, 2009 7:47 AM > > > To: HttpClient User Discussion > > > Subject: Re: any suggestions as to what could be wrong here? > > > > > > On Mon, Jun 22, 2009 at 05:12:11PM -0500, Patricia Goldweic wrote: > > > > Hi, > > > > I've (very) recently started using httpclient (3.1) in > my Java app. > > > > I've successfully been able to make connections from a > > > program running > > > > on server A to another program (servlet) running on server > > > B, where B > > > > uses Tomcat as the servlet container, and DIGEST > authentication is > > > > used to authenticate between A and B. > > > > Now, here is the problem: within server B, I need to make > > > another http > > > > request to a different servlet running also on B, in > the same web > > > > application as A. I used exactly the same code to create the > > > > Httpclient instance, set credentials, and execute a > GetMethod that > > > > does what I need on that second servlet on B, that what > > > I've used for > > > > connections between A and B. > > > > However, when this new httpclient connection is created and > > > run within > > > > B, I get a 'No credentials available for DIGEST: '<REALM > > > NAME>&<DOMAIN NAME>'. > > > > One thing to note (perhaps): on the web application on > B, the http > > > > client instances are created within a background thread > > > that is part > > > > of the web application. > > > > > > > > Does anybody have any suggestions as to what could be > causing this > > > > credentials issue? (BTW, I'm printing out my own debugging > > > statements > > > > when I set the credentials in the httpclient instance, right > > > > before the call to executeMethod). > > > > My code is as follows: > > > > > > > > private HttpClient getHttpClient() { > > > > HttpClient client = new HttpClient(); > > > > List<String> authPrefs = new ArrayList<String>(1); > > > > authPrefs.add(AuthPolicy.DIGEST); > > > > > > > > client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, > > > > authPrefs); > > > > client.getState().setCredentials(new > AuthScope("mydomain", -1, > > > > > > Patricia, > > > > > > The first parameter of AuthScope is expected to be a > hostname, not a > > > domain name. > > > > > > Hope this helps > > > > > > Oleg > > > > > > > > > > "myrealm"), new UsernamePasswordCredentials("myaccount", > > > "mypassword"))); > > > > return client; > > > > } > > > > > > > > And I'm using it as follows : > > > > > > > > HttpClient client = getHttpClient(); GetMethod get = new > > > > GetMethod("someurlWithinB"); get.setDoAuthentication(true); int > > > > responseCode = 0; String responseString = null; try { > > > > responseCode = client.executeMethod(get); > > > > ... (here I check the response code and find '401' ) > > > > } catch (Exception) > > > > ... > > > > } > > > > > > > > > > > > -Patricia > > > > > > > -------------------------------------------------------------------- > > > - To unsubscribe, e-mail: > [email protected] > > > For additional commands, e-mail: > [email protected] > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
