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" <[EMAIL PROTECTED]>
To: "Commons HttpClient Project" <[EMAIL PROTECTED]>
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


Reply via email to