[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1267?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13509295#comment-13509295
 ] 

Karl Wright commented on HTTPCLIENT-1267:
-----------------------------------------

Changing the code back to calling httpClient.setCookieStore() now allows 
fetches to proceed, with the original symptom.  I have debugging code in the 
place that Oleg recommended, as follows:

>>>>>>
    public boolean match(final Cookie cookie, final CookieOrigin origin) {
        System.out.println("Matching cookie "+cookie);
        if (cookie == null) {
            throw new IllegalArgumentException("Cookie may not be null");
        }
        if (origin == null) {
            throw new IllegalArgumentException("Cookie origin may not be null");
        }
        for (CookieAttributeHandler handler: getAttribHandlers()) {
            if (!handler.match(cookie, origin)) {
                System.out.println(" Cookie failed match! handle class: 
"+handler.getClass().getName());
                return false;
            }
        }
        return true;
    }
<<<<<<

This debugging code is never called.  I therefore have to conclude that the 
cookiestore bound to httpclient is somehow getting cleared at the beginning of 
the execute() method.

I'll pick this up later and see if I can find out where the clear is taking 
place.  Since it is a BasicCookieStore instance, I should be able to get a 
stack trace whenever clear() is called.


                
> There seems to be no way to get HttpClient to include cookies from a custom 
> store
> ---------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1267
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1267
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpCookie
>    Affects Versions: 4.2.2
>            Reporter: Karl Wright
>
> In the port of ManifoldCF from commons-httpclient to httpcomponents, we 
> discovered a problem or maybe a design flaw with how cookies are handled.
> What we're trying to do is to follow a certain series of html pages, and 
> record the cookies after that is done, and use exactly those cookies for a 
> subsequent series of pages.  So I have code that looks something like this:
> {code}
> DefaultHttpClient httpClient = new DefaultHttpClient();
> ...
> CookieStore cs = new BasicCookieStore();
> cs.addCookie(...);  // for each saved cookie
> httpClient.setCookieStore(cs);
> HttpGet httpget = new HttpGet(...);
> HttpResponse response = httpClient.execute(httpget);
> Cookie[] cookiesToSave = httpClient.getCookieStore().getCookies();
> [save the cookies aside]
> {code}
> What happens when I do this against a page that sets a cookie, is I get a 
> perfectly reasonable cookie, and save it.  For the next page, the code to add 
> the cookie to the custom store then seems to work fine as well.  But when I 
> watch what is transmitted for the request (via header logging) I see no 
> Cookie header being sent, and indeed the cookie seems to be lost.
> Similar logic was done with HttpState in commons-httpclient, and worked 
> perfectly there against the same website.
> I have not yet tried the HttpContext approach for implementing this - I may 
> try that while awaiting an answer to this ticket, but the above seems like it 
> ought to work, according to the documentation.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to