hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Wright (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HTTPCLIENT-1267) There seems to be no way to get HttpClient to include cookies from a custom store
Date Mon, 03 Dec 2012 11:55:58 GMT

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

Karl Wright edited comment on HTTPCLIENT-1267 at 12/3/12 11:55 AM:
-------------------------------------------------------------------

The easiest way to reproduce this is the following:

(0) Make sure you have ant >=1.7 installed, svn 1.7, and have your JAVA_HOME set to point
at a jdk 1.6 or above.
(1) Check out https://svn.apache.org/repos/asf/manifoldcf/branches/CONNECTORS-120-1.
(2) Run the following:

ant make-core-deps

This will download all necessary dependencies for the test, including httpcomponents core
and httpclient.

(3) To exercise the test itself, which fires up a mock session-protected web site:

ant run-webcrawler-tests-derby

In its broken state it will run until the test times out, generating reams of logging output
into the file:

tests/webcrawler/test-output-derby/manifoldcf.log

^C out of the test to stop it before it fills your disk.  If you want to inspect the pertinent
code itself, you can find it all localized in:

connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/ThrottledFetcher.java

All functional access to httpcomponents is localized there, so luckily there is no other place
to look.

The httpcomponents libraries, if you should want to replace them, are in the "lib" directory,
as "httpcore.jar" and "httpclient.jar".  Rerun after a failed test by:

ant clean run-webcrawler-tests-derby

Thanks,
Karl
                
      was (Author: kwright@metacarta.com):
    The easiest way to reproduce this is the following:

(0) Make sure you have ant >=1.7 installed, and have your JAVA_HOME set to point at a jdk
1.6 or above.
(1) Check out https://svn.apache.org/repos/asf/manifoldcf/branches/CONNECTORS-120-1.
(2) Run the following:

ant make-core-deps

This will download all necessary dependencies for the test, including httpcomponents core
and httpclient.

(3) To exercise the test itself, which fires up a mock session-protected web site:

ant run-webcrawler-tests-derby

In its broken state it will run until the test times out, generating reams of logging output
into the file:

tests/webcrawler/test-output-derby/manifoldcf.log

^C out of the test to stop it before it fills your disk.  If you want to inspect the pertinent
code itself, you can find it all localized in:

connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/ThrottledFetcher.java

All functional access to httpcomponents is localized there, so luckily there is no other place
to look.

The httpcomponents libraries, if you should want to replace them, are in the "lib" directory,
as "httpcore.jar" and "httpclient.jar".  Rerun after a failed test by:

ant clean run-webcrawler-tests-derby

Thanks,
Karl
                  
> 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message