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]