Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AnyEvent::HTTP::LWP::UUsergContributed Perl DAnyEvent::HTTP::LWP::UserAgent(3)

NAME
       AnyEvent::HTTP::LWP::UserAgent -	LWP::UserAgent interface but works
       using AnyEvent::HTTP

VERSION
       version 0.10

SYNOPSIS
	 use 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;

DESCRIPTION
       When 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
       $ua->conn_cache
       $ua->conn_cache($cache_obj)
	   New versions	of "AnyEvent::HTTP" supports HTTP(S)/1.1 persistent
	   connection, so you can control it in
	   "AnyEvent::HTTP::LWP::UserAgent" using "conn_cache" method.

	   If you set "conn_cache" (as "LWP::ConnCache"	object)	then
	   "Anyevent::HTTP::LWP::UserAgent" makes two things. In first it sets
	   global variable $AnyEvent::HTTP::ACTIVE as you setted
	   "total_capacity" for	"conn_cache" (be careful: this have a global
	   consequences, not local). And in the	second
	   "AnyEvent::HTTP::LWP::UserAgent" will create	persistent connections
	   if your $ua have "conn_cache" (local	propery	of $ua).

	   But you can't use remainder methods of your "conn_cache", all
	   connections will contains in	"AnyEvent::HTTP".
	   $AnyEvent::HTTP::ACTIVE sets	only when you set "conn_cache" for
	   $ua.	If you just change "total_capacity" of old "conn_cache"	it
	   will	not change anything.

ASYNC METHODS
       The 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 { ...	});

       simple_request_async
       request_async
       get_async
       post_async
       head_async
       put_async
       delete_async

LIMITATIONS AND	DETAILS
       Some 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::http

ACKNOWLEDGEMENTS
       Yasutaka	Atarashi

AUTHOR
       Yury Zavarin <yury.zavarin@gmail.com>

COPYRIGHT AND LICENSE
       This 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.

perl v5.32.0			  2012-12-10 AnyEvent::HTTP::LWP::UserAgent(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | SOME METHODS | ASYNC METHODS | LIMITATIONS AND DETAILS | SEE ALSO | ACKNOWLEDGEMENTS | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=AnyEvent::HTTP::LWP::UserAgent&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help