ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-HTTP/HTTP.pm
(Generate patch)

Comparing AnyEvent-HTTP/HTTP.pm (file contents):
Revision 1.3 by root, Wed Jun 4 11:58:36 2008 UTC vs.
Revision 1.7 by root, Wed Jun 4 12:10:27 2008 UTC

52=item http_get $url, key => value..., $cb->($data, $headers) 52=item http_get $url, key => value..., $cb->($data, $headers)
53 53
54Executes an HTTP-GET request. See the http_request function for details on 54Executes an HTTP-GET request. See the http_request function for details on
55additional parameters. 55additional parameters.
56 56
57=item http_head $url, key => value..., $cb->($data, $headers)
58
59Executes an HTTP-HEAD request. See the http_request function for details on
60additional parameters.
61
57=item http_get $url, $body, key => value..., $cb->($data, $headers) 62=item http_post $url, $body, key => value..., $cb->($data, $headers)
58 63
59Executes an HTTP-POST request with a requets body of C<$bod>. See the 64Executes an HTTP-POST request with a request body of C<$bod>. See the
60http_request function for details on additional parameters. 65http_request function for details on additional parameters.
61 66
62=item http_request $method => $url, key => value..., $cb->($data, $headers) 67=item http_request $method => $url, key => value..., $cb->($data, $headers)
63 68
64Executes a HTTP request of type C<$method> (e.g. C<GET>, C<POST>). The URL 69Executes a HTTP request of type C<$method> (e.g. C<GET>, C<POST>). The URL
66 71
67The callback will be called with the response data as first argument 72The callback will be called with the response data as first argument
68(or C<undef> if it wasn't available due to errors), and a hash-ref with 73(or C<undef> if it wasn't available due to errors), and a hash-ref with
69response headers as second argument. 74response headers as second argument.
70 75
71All the headers in that has are lowercased. In addition to the response 76All the headers in that hash are lowercased. In addition to the response
72headers, the three "pseudo-headers" C<HTTPVersion>, C<Status> and 77headers, the three "pseudo-headers" C<HTTPVersion>, C<Status> and
73C<Reason> contain the three parts of the HTTP Status-Line of the same 78C<Reason> contain the three parts of the HTTP Status-Line of the same
74name. 79name.
75 80
76If an internal error occurs, such as not being able to resolve a hostname, 81If an internal error occurs, such as not being able to resolve a hostname,
77then C<$data> will be C<undef>, C<< $headers->{Status} >> will be C<599> 82then C<$data> will be C<undef>, C<< $headers->{Status} >> will be C<599>
78and the C<Reason> pseudo-header will contain an error message. 83and the C<Reason> pseudo-header will contain an error message.
84
85A typical callback might look like this:
86
87 sub {
88 my ($body, $hdr) = @_;
89
90 if ($hdr->{Status} =~ /^2/) {
91 ... everything should be ok
92 } else {
93 print "error, $hdr->{Status} $hdr->{Reason}\n";
94 }
95 }
79 96
80Additional parameters are key-value pairs, and are fully optional. They 97Additional parameters are key-value pairs, and are fully optional. They
81include: 98include:
82 99
83=over 4 100=over 4
241 } 258 }
242 259
243 substr $_, 0, 1, "" 260 substr $_, 0, 1, ""
244 for values %hdr; 261 for values %hdr;
245 262
246 if ($method ne "HEAD") { 263 if ($method eq "HEAD") {
264 %state = ();
265 $cb->(undef, \%hdr);
266 } else {
247 if (exists $hdr{"content-length"}) { 267 if (exists $hdr{"content-length"}) {
248 $_[0]->unshift_read (chunk => $hdr{"content-length"}, sub { 268 $_[0]->unshift_read (chunk => $hdr{"content-length"}, sub {
249 # could cache persistent connection now 269 # could cache persistent connection now
250 if ($hdr{connection} =~ /\bkeep-alive\b/i) { 270 if ($hdr{connection} =~ /\bkeep-alive\b/i) {
251 # but we don't, due to misdesigns, this is annoyingly complex 271 # but we don't, due to misdesigns, this is annoyingly complex
277sub http_get($$;@) { 297sub http_get($$;@) {
278 unshift @_, "GET"; 298 unshift @_, "GET";
279 &http_request 299 &http_request
280} 300}
281 301
302sub http_head($$;@) {
303 unshift @_, "HEAD";
304 &http_request
305}
306
282sub http_post($$$;@) { 307sub http_post($$$;@) {
283 unshift @_, "POST", "body"; 308 unshift @_, "POST", "body";
284 &http_request 309 &http_request
285} 310}
286 311

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines