Piers Harding

NAME

HTTP::MHTTP - this library provides reasonably low level access to the HTTP protocol, for perl. This does not replace LWP (what possibly could :-) but is a cut for speed. It also supports all of HTTP 1.0, so you have GET, POST, PUT, HEAD, and DELETE. Some support of HTTP 1.1 is available - sepcifically Transfer-Encoding = chunked and the Keep-Alive extensions.

Additionally - rudimentary SSL support can be compiled in. This effectively enables negotiation of TLS, but does not validate the certificates.

SYNOPSIS

 use HTTP::MHTTP;
 
 http_init();
 
 http_add_headers(
               'User-Agent' => 'DVSGHTTP1/1',
               'Accept-Language' => 'en-gb',
               'Connection' => 'Keep-Alive',
                   );
 if (http_call("GET", "http://localhost")){
   if (http_status() == 200 ){
     print http_response();
   } else {
     print "MSG: ".http_reason();
   }
 } else {
   print "call failed \n";
 }

DESCRIPTION

A way faster http access library that uses C extension based on mhttp to do the calls.

http_init()

initialise the mhttp library - must be called once to reset all internals, use http_reset() if you don't need to reset your headers before the next call.

http_set_protocol()

  http_set_protocol(1);  # now operating in HTTP 1.1 mode

Set the protocol level to use - either HTTP 1.0 or 1.1 by passing 0 or 1 - the default is 0 (HTTP 1.0).

http_reset()

reset the library internals for everything except the headers specified previously, and the debug switch. Call http_init() if you need to reset everything.

switch_debug()

  switch_debug(<0 || 1>)

Toggle the internal debugging on and off by passing either > 1 or 0.

http_add_headers()

  http_add_headers(
                 'User-Agent' => 'HTTP-MHTTP1/0',
                 'Host' => 'localhost',
                 'Accept-Language' => 'en-gb',
                );

pass in header/value pairs that will be set on the next http_call().

http_body()

  http_body("this is the body");

Set the body of the next request via http_call().

http_call()

  my $rc = http_call("GET", "http://localhost");

Do an http request. Returns either < 0 or 1 depending on whether the call was successful - remember to still check the http_status() code though.

Value < 0 are: -1 : an invalid action (HTTP verb) was supplied -2 : must supply an action (HTTP verb) -3 : must supply a url -4 : url must start with http:// or https:// -5 : write of headers to socket failed -6 : write of data to socket was short -7 : failed to write last line to socket -8 : something wrong with the Conent-Length header -11 : SSL_CTX_new failed - abort everything -12 : SSL_new failed - abort everything -13 : SSL_connect failed - abort everything -14 : SSL_get_peer_certificate failed - abort everything -15 : X509_get_subject_name failed - abort everything -16 : X509_get_issuer_name failed - abort everything -17 : cant find the next chunk for Transfer-encoding -18 : cant find end headers -19 : You must supply a Host header for HTTP/1.1

http_status()

Returns the last status code.

http_reason()

Returns the last reason code.

http_headers()

Returns the headers of the last call, as a single string.

http_split_headers()

Returns the split out array ref of array ref header value pairs of the last call. [ [ hdr, val], [hdr, val] ... ]

http_response_length()

Returns the length of the body of the last call.

http_response()

Returns the body of the last call.

basic_authorization()

  my $pass = basic_authorization($user, $password);

Construct the basic authorization value to be passed in an "Authorization" header.

COPYRIGHT

Copyright (c) 2003, Piers Harding. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.

AUTHOR

Piers Harding, piers@ompa.net.

SEE ALSO

perl(1)