|
NAMEAnyEvent::HTTP::LWP::UserAgent - LWP::UserAgent interface but works using AnyEvent::HTTPVERSIONversion 0.10SYNOPSISuse AnyEvent::HTTP::LWP::UserAgent; use Coro; my $ua = AnyEvent::HTTP::LWP::UserAgent->new; my @urls = (...); my @coro = map { my $url = $_; async { my $r = $ua->get($url); print "url $url, content " . $r->content . "\n"; } } @urls; $_->join for @coro; # Or without Coro use AnyEvent::HTTP::LWP::UserAgent; use AnyEvent; my $ua = AnyEvent::HTTP::LWP::UserAgent->new; my @urls = (...); my $cv = AE::cv; $cv->begin; foreach my $url (@urls) { $cv->begin; $ua->get_async($url)->cb(sub { my $r = shift->recv; print "url $url, content " . $r->content . "\n"; $cv->end; }); } $cv->end; $cv->recv; DESCRIPTIONWhen you use Coro you have a choice: you can use Coro::LWP or AnyEvent::HTTP (if you want to make asynchronous HTTP requests). If you use Coro::LWP, some modules may work incorrectly (for example Cache::Memcached) because of global change of IO::Socket behavior. AnyEvent::HTTP uses different programming interface, so you must change more of your old code with LWP::UserAgent (and HTTP::Request and so on), if you want to make asynchronous code.AnyEvent::HTTP::LWP::UserAgent uses AnyEvent::HTTP inside but have an interface of LWP::UserAgent. You can safely use this module in Coro environment (and possibly in AnyEvent too). In plain AnyEvent, you may use _async methods. They don't make blocking wait but return condition variable. So, you can avoid recursive blocking wait error. SOME METHODS
ASYNC METHODSThe following methods are async version of corresponding methods w/o _async suffix. Parameters are identical as originals. However, return value becomes condition variable. You can use it in a synchronous way by blocking wait$ua->simple_request_async(@args)->recv or in an asynchronous way, also. $ua->simple_request_async(@args)->cb(sub { ... });
LIMITATIONS AND DETAILSSome features of LWP::UserAgent can be broken ("protocols_forbidden" or something else). Precise documentation and realization of these features will come in the future.You can use some AnyEvent::HTTP global function and variables. But use "agent" of UA instead of $AnyEvent::HTTP::USERAGENT and "max_redirect" instead of $AnyEvent::HTTP::MAX_RECURSE. Content in request can be specified by code reference. This is the same as LWP::UserAgent but there are some limitations. LWP::UserAgent uses chunked encoding if Content-Length is not specified, while this module does NOT use chunked encoding even if Content-Length is not specified. Content in response can be specified as filename or code reference. This is the same as LWP::UserAgent. SEE ALSO<http://github.com/tadam/AnyEvent-HTTP-LWP-UserAgent> Coro::LWP AnyEvent::HTTP LWP::Protocol::AnyEvent::http LWP::Protocol::Coro::httpACKNOWLEDGEMENTSYasutaka AtarashiAUTHORYury Zavarin <yury.zavarin@gmail.com>COPYRIGHT AND LICENSEThis software is copyright (c) 2012 by Yury Zavarin.This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Visit the GSP FreeBSD Man Page Interface. |