[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpclient-commons-dev
Subject:    Re: how to accept all cookies ?
From:       Mathias Cianci <mcianci () axecibles ! com>
Date:       2004-07-21 13:32:31
Message-ID: 40FE706F.2090509 () axecibles ! com
[Download RAW message or body]


Thank you, now it works !

I only had to make a new constructor for MyGetMethod

        public MyGetMethod(String uri) {
            super(uri);
            setFollowRedirects(true);
        }

Have a nice day !

Elijah Baley a écrit :

>Here is how I did it:
>
>1. derive your own method from the one you want to use - e.g.:
>
>    class MyGetMethod extends GetMethod {
>        .. constructors...
>    protected void processResponseHeaders (HttpState state, HttpConnection
>conn)
>
>    {
>
>    final HeaderGroup hg=getResponseHeaderGroup();
>
>    Header[] headers=hg.getHeaders("set-cookie2");
>
>    // Process old style set-cookie headers if new style headres are not
>present
>
>    if ((null == headers) || (headers.length <= 0))
>
>headers = hg.getHeaders("set-cookie");
>
>final CookieSpec
>parser=CookiePolicy.getSpecByPolicy(state.getCookiePolicy());
>
>for (int i = 0; i < headers.length; i++)
>
>{
>
>final Header header=headers[i];
>
>/* NOTE !!! remove the header from the group since we
>
>* handle it here, and then we call the base class
>
>*/
>
>hg.removeHeader(header);
>
>Cookie[] cookies=null;
>
>try
>
>{
>
>cookies = parser.parse(
>
>conn.getHost(),
>
>conn.getPort(),
>
>getPath(),
>
>conn.isSecure(),
>
>header);
>
>}
>
>catch (MalformedCookieException e)
>
>{
>
>// ignore
>
>}
>
>if (cookies != null)
>
>{
>
>for (int j = 0; j < cookies.length; j++)
>
>{
>
>final Cookie cookie=cookies[j];
>
>try
>
>{
>
>/* NOTE !!! overridden this check in the
>
>* default "validate" since serversends
>
>* such cookies. In this case, we take a chance
>
>* and accumulate the cookie anyway
>
>*/
>
>if (getPath().startsWith(cookie.getPath()))
>
>parser.validate(conn.getHost(),
>
>conn.getPort(),
>
>getPath(),
>
>conn.isSecure(),
>
>cookie);
>
>state.addCookie(cookie);
>
>}
>
>catch (MalformedCookieException e)
>
>{
>
>// ignore
>
>}
>
>}
>
>}
>
>}
>
>/* NOTE: we call the base class even though it is a waste of
>
>* time since the above code is what the base class does (except
>
>* for the special adjustments). However, better safe than sorry,
>
>* just in case future implementations do something else as well.
>
>*/
>
>super.processResponseHeaders(state, conn);
>
>} // end of processResponseHeaders method override
>
>    }
>
>----- Original Message ----- 
>From: "Kalnichevski, Oleg" <oleg.kalnichevski@bearingpoint.com>
>To: "Commons HttpClient Project" <commons-httpclient-dev@jakarta.apache.org>
>Sent: Wednesday, July 21, 2004 11:18
>Subject: RE: how to accept all cookies ?
>
>
>
>Mathias,
>
>I know it is of little comfort to you but the cookie clearly violates even
>the most loosely defines HTTP security policies. At least the site seems to
>send the invalid cookie to MSIE (or any agent identifying itself as MSIE)
>only
>
>I see three possibilities to solve the problem
>
>(1) I _assume_ that the host www.altavista.com may aslo have a DNS entry
>within the yahoo.com domain. See if can find it out and use it instead
>(2) provide a custom cookie policy. Unfortunately pluggable cookie policies
>are supported by HttpClient 3.0 only, which is still in ALPHA
>(3) Get HttpClient 2.0 source code and tweak it to your liking
>
>Oleg
>  
>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic