… | |
… | |
46 | use AnyEvent::Util (); |
46 | use AnyEvent::Util (); |
47 | use AnyEvent::Handle (); |
47 | use AnyEvent::Handle (); |
48 | |
48 | |
49 | use base Exporter::; |
49 | use base Exporter::; |
50 | |
50 | |
51 | our $VERSION = 2.2; |
51 | our $VERSION = 2.21; |
52 | |
52 | |
53 | our @EXPORT = qw(http_get http_post http_head http_request); |
53 | our @EXPORT = qw(http_get http_post http_head http_request); |
54 | |
54 | |
55 | our $USERAGENT = "Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)"; |
55 | our $USERAGENT = "Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)"; |
56 | our $MAX_RECURSE = 10; |
56 | our $MAX_RECURSE = 10; |
… | |
… | |
846 | # send request |
846 | # send request |
847 | $hdl->push_write ( |
847 | $hdl->push_write ( |
848 | "$method $rpath HTTP/1.1\015\012" |
848 | "$method $rpath HTTP/1.1\015\012" |
849 | . (join "", map "\u$_: $hdr{$_}\015\012", grep defined $hdr{$_}, keys %hdr) |
849 | . (join "", map "\u$_: $hdr{$_}\015\012", grep defined $hdr{$_}, keys %hdr) |
850 | . "\015\012" |
850 | . "\015\012" |
851 | . (delete $arg{body}) |
851 | . $arg{body} |
852 | ); |
852 | ); |
853 | |
853 | |
854 | # return if error occurred during push_write() |
854 | # return if error occurred during push_write() |
855 | return unless %state; |
855 | return unless %state; |
856 | |
856 | |
… | |
… | |
934 | # industry standard is to redirect POST as GET for |
934 | # industry standard is to redirect POST as GET for |
935 | # 301, 302 and 303, in contrast to HTTP/1.0 and 1.1. |
935 | # 301, 302 and 303, in contrast to HTTP/1.0 and 1.1. |
936 | # also, the UA should ask the user for 301 and 307 and POST, |
936 | # also, the UA should ask the user for 301 and 307 and POST, |
937 | # industry standard seems to be to simply follow. |
937 | # industry standard seems to be to simply follow. |
938 | # we go with the industry standard. 308 is defined |
938 | # we go with the industry standard. 308 is defined |
939 | # by rfc7238 |
939 | # by rfc7538 |
940 | if ($status == 301 or $status == 302 or $status == 303) { |
940 | if ($status == 301 or $status == 302 or $status == 303) { |
941 | # HTTP/1.1 is unclear on how to mutate the method |
941 | # HTTP/1.1 is unclear on how to mutate the method |
942 | $method = "GET" unless $method eq "HEAD"; |
942 | $method = "GET" unless $method eq "HEAD"; |
943 | $redirect = 1; |
943 | $redirect = 1; |
944 | } elsif ($status == 307 or $status == 308) { |
944 | } elsif ($status == 307 or $status == 308) { |
… | |
… | |
1277 | save cookies to disk, and you should call this function after loading them |
1277 | save cookies to disk, and you should call this function after loading them |
1278 | again. If you have a long-running program you can additionally call this |
1278 | again. If you have a long-running program you can additionally call this |
1279 | function from time to time. |
1279 | function from time to time. |
1280 | |
1280 | |
1281 | A cookie jar is initially an empty hash-reference that is managed by this |
1281 | A cookie jar is initially an empty hash-reference that is managed by this |
1282 | module. It's format is subject to change, but currently it is like this: |
1282 | module. Its format is subject to change, but currently it is as follows: |
1283 | |
1283 | |
1284 | The key C<version> has to contain C<1>, otherwise the hash gets |
1284 | The key C<version> has to contain C<1>, otherwise the hash gets |
1285 | emptied. All other keys are hostnames or IP addresses pointing to |
1285 | emptied. All other keys are hostnames or IP addresses pointing to |
1286 | hash-references. The key for these inner hash references is the |
1286 | hash-references. The key for these inner hash references is the |
1287 | server path for which this cookie is meant, and the values are again |
1287 | server path for which this cookie is meant, and the values are again |
… | |
… | |
1332 | C<Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)>). |
1332 | C<Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)>). |
1333 | |
1333 | |
1334 | =item $AnyEvent::HTTP::MAX_PER_HOST |
1334 | =item $AnyEvent::HTTP::MAX_PER_HOST |
1335 | |
1335 | |
1336 | The maximum number of concurrent connections to the same host (identified |
1336 | The maximum number of concurrent connections to the same host (identified |
1337 | by the hostname). If the limit is exceeded, then the additional requests |
1337 | by the hostname). If the limit is exceeded, then additional requests |
1338 | are queued until previous connections are closed. Both persistent and |
1338 | are queued until previous connections are closed. Both persistent and |
1339 | non-persistent connections are counted in this limit. |
1339 | non-persistent connections are counted in this limit. |
1340 | |
1340 | |
1341 | The default value for this is C<4>, and it is highly advisable to not |
1341 | The default value for this is C<4>, and it is highly advisable to not |
1342 | increase it much. |
1342 | increase it much. |