Hi Todor,

On Mar 13, 2010, at 5:19am, Todor Boev wrote:

Ken Krugler wrote:

On Mar 12, 2010, at 8:30am, Todor Boev wrote:

Did that...works just fine. 10x

10x what?

10x for pointing me to the low-level cookies stuff in HttpClient. I copied the code that sets up a CookieSpecRegistry from there. Than I made my version of RequestAddCookies that only use stuff from the blocking API. I reused the original RequestProcessCookies. Than all I had to do to get cookies to work is to place a CookieStore and a CookieSpecRegistry on the HttpContext as soon as a
non-blocking http connection opens. Hope that answers your question.

Sure - looks like I'll have to brush up my net slang :)

I was hoping it might be related to nio vs. threaded approaches to HTTP handling.

There's been a lot of debate about the value (performance, simplicity, resource consumption) but I haven't seen much head-to-head comparison where the rest of the implementation is roughly comparable. If you ever get any comparison numbers, I'd love to see them.

-- Ken

On Thu, Mar 11, 2010 at 9:06 PM, Oleg Kalnichevski <[email protected]>
wrote:

Todor Boev wrote:

Hi,
I am working on an asynchronous HTTP client using the httpcore-nio
library.
I need to do session management with cookies. I tried to do it like
this:

  // Make a request/response handler hooked to the executor
   BasicHttpProcessor httpproc = new BasicHttpProcessor();
   httpproc.addInterceptor(new RequestContent());
   httpproc.addInterceptor(new RequestTargetHost());
   httpproc.addInterceptor(new RequestConnControl());
   httpproc.addInterceptor(new RequestUserAgent());
   httpproc.addInterceptor(new RequestExpectContinue());
httpproc.addInterceptor(new RequestAddCookies()); // ADD COOKIES TO
REQUEST
httpproc.addInterceptor(new ResponseProcessCookies()); // PROCESS
COOKIES FROM RESPONSE

   NHttpRequestExecutionHandler execHandler = new
NHttpRequestExecutionHandler(endpointUri, _cookies);
   ThrottlingHttpClientHandler handler = new
ThrottlingHttpClientHandler(
         httpproc, //HOOK PROCESSOR TO HANDLER
         execHandler,
         new DefaultConnectionReuseStrategy(),
         executor,
         params);

To my distaste I discovered that ReequestAddCookies and
ResponseProcessCookies are coded agsinst the blocking HTTP API and
RequestAddCookies crashes with a ClassCastExceptions when it tries
retrieve
a ManagedClientConnection from the HttpContext (and we have an
NHttpClientConnection there instead). The connection seems to be needed
for
some trivial stuff: the remote port, and a http/https test.

My questions are:

1) Is there a ready-made way to do cookies with the asynchronous HTTP
client?


No, currently there is not



Is there an async HTTP client library for example - couldn't find

one.


There is one, which is still in a very early stage of development

http://svn.apache.org/repos/asf/httpcomponents/asynchttpclient/trunk/



2) If I copy/paste RequestAddCookies and ResponseProcessCookies into my
classes and fix the trivial problems will I get a significatn
performance
hit?


No, you will not. Just use low level cookie management code from
HttpClient
on top of HttpCore NIO and you will be just fine

Oleg


--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c   w e b   m i n i n g





---------------------------------------------------------------------
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]


--------------------------------------------
Ken Krugler
+1 530-210-6378
http://bixolabs.com
e l a s t i c   w e b   m i n i n g





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

Reply via email to