Perl - Using HTTP::Lite

I recently had to use the HTTP::Lite perl module and thought I would share an example of how to use it. HTTP::Lite was is available on www.cpan.org; its very lightweight and has no dependancies other than Socket & Fcntl which included with almost all Perl implementations by default.

Based on the examples by the HTTP::Lite author Roy Hooper <rhooper@thetoybox.org>

#!perl

use HTTP::Lite;

#
# Get and print out the headers and body of the Google homepage
#

$http = new HTTP::Lite;

$req = $http->request("http://www.google.co.uk/")
   or die "Unable to get document: $!";

# Print the reconstructed status line
print $http->protocol() . " " . $req . " " . $http->status_message() . "";

# Get the Headers & Body
@headers = $http->headers_array();
$body    = $http->body();

# Display each Header
foreach $header (@headers) {
  print $header . "\n";
}
print "\n\n";

# Display the Body
print $body . "\n";

#
# Execute a Google Search using the POST method
#

$http = new HTTP::Lite;

# Post variables
%vars = (
         "hl" => "en",
         "q" => "cpan",
         "btnG" => "Search",
         "meta" => ""
        );
$http->prepare_post(\%vars);

$req = $http->request("http://www.google.co.uk/search")
  or die "Unable to get document: $!";

# Print the reconstructed status line
print $http->protocol() . " " . $req . " " . $http->status_message() . "";

# Get the Headers & Body
@headers = $http->headers_array();
$body    = $http->body();

# Display each Header
foreach $header (@headers) {
  print $header . "\n";
}
print "\n\n";

# Display the Body
print $body . "\n";

Google doesnt support queries by POST methods anymore, so the response to the second request here will be a "501 Not Implemented".


About this entry