Hi Roland,

Thanks. I'll try this today. Do you know if httpclient 2.0 final is also
working like this or is this something new from 2.1-dev?

Thanks
-Vincent

> -----Original Message-----
> From: Roland Weber [mailto:[EMAIL PROTECTED]
> Sent: 15 March 2004 08:41
> To: Commons HttpClient Project
> Subject: RE: [Cactus] Gump build failures for the past 2 weeks
> 
> Hello Vincent,
> 
> the code should not add an Authorization header.
> HttpClient does that automatically, and probably
> removes the one you set in the process. Instead:
> 
> - store uid/pwd in the HttpState as default credential
> - enable preemptive authentication on the HttpMethod
> 
> The correct Authorization header will then be
> generated by the HttpClient. You don't have to
> care about the header format and base64
> encoding in the application.
> 
> cheers,
>   Roland
> 
> 
> 
> 
> 
> 
> "Vincent Massol" <[EMAIL PROTECTED]>
> 15.03.2004 08:09
> Please respond to "Commons HttpClient Project"
> 
>         To:     "'Commons HttpClient Project'"
> <[EMAIL PROTECTED]>
>         cc:     "'Cactus Developers List'"
<[EMAIL PROTECTED]>
>         Subject:        RE: [Cactus] Gump build failures for the past
2
> weeks
> 
> 
> Hi Oleg,
> 
> Thanks very much for your help. Here's the code that adds basic
> authentication (by adding authorization HTTP header):
> 
>     public void configure(WebRequest theRequest,
>         Configuration theConfiguration)
>     {
>         // According to HTTP 1.0 Spec:
>         // basic-credentials = "Basic" SP basic-cookie
>         // basic-cookie      = <base64 encoding of userid-password,
>         //                     except not limited to 76 char/line>
>         // userid-password   = [ token ] ":" *TEXT
>         //
>         // see setName and setPassword for details of token and TEXT
>         String basicCookie = getName() + ":" + getPassword();
>         String basicCredentials = "Basic "
>             + new String(base64Encode(basicCookie.getBytes()));
> 
>         theRequest.addHeader("Authorization", basicCredentials);
>     }
> 
> Then, we use HttpClient to send the request:
> 
> [...]
>         // Add the cookies
>         HttpState state = CookieUtil.createHttpState(theRequest, url);
> 
>         // Open the connection and get the result
>         HttpClient client = new HttpClient();
>         HostConfiguration hostConfiguration = new HostConfiguration();
>         hostConfiguration.setHost(url.getHost(), url.getPort(),
>             Protocol.getProtocol(url.getProtocol()));
>         client.setState(state);
>         client.executeMethod(hostConfiguration, this.method);
> 
>         // Wrap the HttpClient method in a java.net.HttpURLConnection
> object
>         return new
org.apache.commons.httpclient.util.HttpURLConnection(
>             this.method, url);
> 
> 
> Let me know if you need more details to understand it.
> 
> Do I have to assume that these changes in httpclient are not
> backward-compatible and there's no compatibility layer, right? Thus if
> Cactus moves to 2.1-dev, we'll need to deliver cactus with httpclient
> 2.1-dev bundled. Thus there is a risk that httpclient 2.1-dev is not
> stable at that point (we'll be releasing a new version of Cactus next
> week). Of course, we could build a compatibility layer in Cactus
itself
> to support both httpclient 2.0 and 2.1-dev. Frankly, I think it makes
> more sense for httpclient to do this. It could get dropped once 2.1
> final is out. It would really be good if 2.1 was backward compatible
(it
> could of course introduce new APIs). Lots of persons are using
> httpclient and breaking an API is not a very good migration path...
:-)
> 
> What do you suggest?
> 
> Thanks
> -Vincent
> 
> > -----Original Message-----
> > From: Oleg Kalnichevski [mailto:[EMAIL PROTECTED]
> > Sent: 15 March 2004 00:52
> > To: Commons HttpClient Project
> > Subject: RE: [Cactus] Gump build failures for the past 2 weeks
> >
> > Vincent,
> > >From the cursory examination the problem appears to have been
caused
> by
> > HttpClient not finding the required credentials. The way credentials
> are
> > set in the HTTP state has changed. Could you please give the code
> > snippet containing calls to HttpState#setCredentials() method(s)?
This
> > method may be the cause of the problem.
> >
> > More tomorrow
> >
> > Oleg
> >
> >
> > On Mon, 2004-03-15 at 00:40, Vincent Massol wrote:
> > > It seems the attachment was stripped. I've uploaded it on:
> > >
> > > http://cvs.apache.org/~vmassol/test_client.log
> > >
> > > Thanks
> > > -Vincent
> > >
> > > > -----Original Message-----
> > > > From: Vincent Massol [mailto:[EMAIL PROTECTED]
> > > > Sent: 15 March 2004 00:30
> > > > To: 'Commons HttpClient Project'
> > > > Cc: [EMAIL PROTECTED]
> > > > Subject: [Cactus] Gump build failures for the past 2 weeks
> > > >
> > > > Hi guys,
> > > >
> > > > I've finally tracked down the Cactus gump build problem we've
been
> > > > having for the past 2 weeks. It appears to be caused by some
> change in
> > > > commons-httpclient.
> > > >
> > > > The build is working fine with version 2.0 and failing on some
> > > > authentication code with a commons-httpclient built from CVS
HEAD.
> > > >
> > > > I'm attaching the cactus log file (which contains httpclient
logs)
> in
> > > > case it helps.
> > > >
> > > > Any idea what can have changed?
> > > >
> > > > Thanks
> > > > -Vincent
> 
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to