NAME
HTTP::Curl - HTTP interface for Net::Curl (clone of HTTP::Any::Curl)
SYNOPSIS
use HTTP::Curl;
my ($is_success, $body, $headers, $redirects) = HTTP::Curl::do_http($easy, $url, $opt);
DESCRIPTION
Curl
use Net::Curl::Easy;
use HTTP::Curl;
my $easy = Net::Curl::Easy->new();
my ($is_success, $body, $headers, $redirects) = HTTP::Curl::do_http($easy, $url, $opt);
or
my $cb = sub {
my ($is_success, $body, $headers, $redirects) = @_;
...
};
HTTP::Curl::do_http(undef, $easy, $url, $opt, $cb);
Curl with Multi
use Net::Curl::Easy;
use Net::Curl::Multi;
use Net::Curl::Multi::EV;
use HTTP::Curl;
my $multi = Net::Curl::Multi->new();
my $curl_ev = Net::Curl::Multi::EV::curl_ev($multi);
my $easy = Net::Curl::Easy->new();
my $cb = sub {
my ($is_success, $body, $headers, $redirects) = @_;
...
};
HTTP::Curl::do_http($curl_ev, $easy, $url, $opt, $cb);
...
Parameters
- url
-
URL as string
- opt
-
options and headers
- cb
-
callback function to get result
options
- referer
-
Referer url
- agent
-
User agent name
- timeout
-
Timeout, seconds
- compressed
-
This option adds 'Accept-Encoding' header to the HTTP query and tells that the response must be decoded. If you don't want to decode the response, please add 'Accept-Encoding' header into the 'headers' parameter.
- headers
-
Ref on HASH of HTTP headers:
{ 'Accept' => '*/*', ... }
-
It enables cookies support. The "" values enables the session cookies support without saving them.
- persistent
-
1 or 0. Try to create/reuse a persistent connection. When not specified, see the default behavior of Curl (reverse of CURLOPT_FORBID_REUSE).
- proxy
-
http and socks proxy
proxy => "$host:$port" or proxy => "$scheme://$host:$port" where scheme can be one of the: http, socks (socks5), socks5, socks4.
- max_size
-
The size limit for response content, bytes.
HTTP::Curl - will return the result partially.
When max_size options will be triggered, 'client-aborted' header will added with 'max_size' value.
- max_redirect
-
The limit of how many times it will obey redirection responses in a given request cycle.
By default, the value is 7.
- body
-
Data for POST method.
String or CODE ref to return strings (return undef is end of body data).
- method
-
When method parameter is "POST", the POST request is used with body parameter on data and 'Content-Type' header is added with 'application/x-www-form-urlencoded' value.
finish callback function
my $cb = sub {
my ($is_success, $body, $headers, $redirects) = @_;
...
};
where:
- is_success
-
It is true, when HTTP code is 2XX.
- body
-
HTML body. When on_header callback function is defined, then body is undef.
- headers
-
Ref on HASH of HTTP headers (lowercase) and others info: Status, Reason, URL
- redirects
-
Previous headers from last to first
on_header callback function
When specified, this callback will be called after getting all headers.
$opt{on_header} = sub {
my ($is_success, $headers, $redirects) = @_;
...
};
on_body callback function
When specified, this callback will be called on each chunk.
$opt{on_body} = sub {
my ($body) = @_; # body chunk
...
};
NOTES
Turn off the persistent options to download pages of many sites.
Use libcurl with "Asynchronous DNS resolution via c-ares".
AUTHOR
Nick Kostyria <kni@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2013 by Nick Kostyria
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.