AnyEvent-HTTP
view release on metacpan or search on metacpan
unshift @_, "GET";
&http_request
}
sub http_head($@) {
unshift @_, "HEAD";
&http_request
}
sub http_post($$@) {
my $url = shift;
unshift @_, "POST", $url, "body";
&http_request
}
=back
=head2 DNS CACHING
AnyEvent::HTTP uses the AnyEvent::Socket::tcp_connect function for
the actual connection, which in turn uses AnyEvent::DNS to resolve
hostnames. The latter is a simple stub resolver and does no caching
on its own. If you want DNS caching, you currently have to provide
your own default resolver (by storing a suitable resolver object in
C<$AnyEvent::DNS::RESOLVER>) or your own C<tcp_connect> callback.
=head2 GLOBAL FUNCTIONS AND VARIABLES
=over 4
=item AnyEvent::HTTP::set_proxy "proxy-url"
Sets the default proxy server to use. The proxy-url must begin with a
string of the form C<http://host:port>, croaks otherwise.
To clear an already-set proxy, use C<undef>.
When AnyEvent::HTTP is loaded for the first time it will query the
default proxy from the operating system, currently by looking at
C<$ENV{http_proxy>}.
=item AnyEvent::HTTP::cookie_jar_expire $jar[, $session_end]
Remove all cookies from the cookie jar that have been expired. If
C<$session_end> is given and true, then additionally remove all session
cookies.
You should call this function (with a true C<$session_end>) before you
save cookies to disk, and you should call this function after loading them
again. If you have a long-running program you can additionally call this
function from time to time.
A cookie jar is initially an empty hash-reference that is managed by this
module. Its format is subject to change, but currently it is as follows:
The key C<version> has to contain C<2>, otherwise the hash gets
cleared. All other keys are hostnames or IP addresses pointing to
hash-references. The key for these inner hash references is the
server path for which this cookie is meant, and the values are again
hash-references. Each key of those hash-references is a cookie name, and
the value, you guessed it, is another hash-reference, this time with the
key-value pairs from the cookie, except for C<expires> and C<max-age>,
which have been replaced by a C<_expires> key that contains the cookie
expiry timestamp. Session cookies are indicated by not having an
C<_expires> key.
Here is an example of a cookie jar with a single cookie, so you have a
chance of understanding the above paragraph:
{
version => 2,
"10.0.0.1" => {
"/" => {
"mythweb_id" => {
_expires => 1293917923,
value => "ooRung9dThee3ooyXooM1Ohm",
},
},
},
}
=item $date = AnyEvent::HTTP::format_date $timestamp
Takes a POSIX timestamp (seconds since the epoch) and formats it as a HTTP
Date (RFC 2616).
=item $timestamp = AnyEvent::HTTP::parse_date $date
Takes a HTTP Date (RFC 2616) or a Cookie date (netscape cookie spec) or a
bunch of minor variations of those, and returns the corresponding POSIX
timestamp, or C<undef> if the date cannot be parsed.
=item $AnyEvent::HTTP::MAX_RECURSE
The default value for the C<recurse> request parameter (default: C<10>).
=item $AnyEvent::HTTP::TIMEOUT
The default timeout for connection operations (default: C<300>).
=item $AnyEvent::HTTP::USERAGENT
The default value for the C<User-Agent> header (the default is
C<Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)>).
=item $AnyEvent::HTTP::MAX_PER_HOST
The maximum number of concurrent connections to the same host (identified
by the hostname). If the limit is exceeded, then additional requests
are queued until previous connections are closed. Both persistent and
non-persistent connections are counted in this limit.
The default value for this is C<4>, and it is highly advisable to not
increase it much.
For comparison: the RFC's recommend 4 non-persistent or 2 persistent
connections, older browsers used 2, newer ones (such as firefox 3)
typically use 6, and Opera uses 8 because like, they have the fastest
browser and give a shit for everybody else on the planet.
=item $AnyEvent::HTTP::PERSISTENT_TIMEOUT
( run in 1.541 second using v1.01-cache-2.11-cpan-e1769b4cff6 )