NAME
HTTP::MessageParser - Parse HTTP Messages
SYNOPSIS
use HTTP::MessageParser;
my ( $message, @request );
while ( my $line = $client->getline ) {
next if !$message && $line eq "\x0D\x0A"; # RFC 2616 4.1
$message .= $line;
last if $message =~ /\x0D\x0A\x0D\x0A$/;
}
eval {
@request = HTTP::MessageParser->parse_request($message);
};
if ( $@ ) {
# 400 Bad Request
}
# ...
DESCRIPTION
Parse HTTP/1.0 and HTTP/1.1 Messages.
METHODS
parse_headers( $string )
my @headers = HTTP::MessageParser->parse_headers($string);
my $headers = HTTP::MessageParser->parse_headers($string);
Parses "Message Headers". "field-name"'s are lowercased. Leading and
trailing "LWS" is removed. "LWS" occurring between "field-content"
are replaced with a single "SP". Takes one argument, a string or a
reference to a string, if it's a reference it will be consumed.
parse_request( $string )
my ( $Method, $Request_URI, $HTTP_Version, $Headers, $Body )
= HTTP::MessageParser->parse_request($string);
Parses a Request. Expects a "Request-Line" followed by zero more
header fields and an empty line. Content occurring after end of
header fields is returned as a string reference, $Body. Takes one
argument, a string or a reference to a string, if it's a reference
it will be consumed.
Throws an exception upon failure.
parse_request_line( $string )
my ( $Method, $Request_URI, $HTTP_Version )
= HTTP::MessageParser->parse_request_line($string);
Parses a "Request-Line". Any leading "CRLF" is ignored. Takes one
argument, a string or a reference to a string, if it's a reference
it will be consumed.
Throws an exception upon failure.
parse_response( $string )
my ( $HTTP_Version, $Status_Code, $Reason_Phrase, $Headers, $Body )
= HTTP::MessageParser->parse_response($string);
Parses a Response. Expects a "Status-Line" followed by zero more
header fields and an empty line. Content occurring after end of
header fields is returned as a string reference, $Body. Takes one
argument, a string or a reference to a string, if it's a reference
it will be consumed.
Throws an exception upon failure.
parse_response_line( $string )
my ( $HTTP_Version, $Status_Code, $Reason_Phrase )
= HTTP::MessageParser->parse_response_line($string);
Parses a "Status-Line". Takes one argument, a string or a reference
to a string, if it's a reference it will be consumed.
Throws an exception upon failure.
parse_version( $string )
my ( $major, $minor ) = HTTP::MessageParser->parse_version($string);
my $version = HTTP::MessageParser->parse_version($string);
Parses a "HTTP-Version" string. In scalar context it returns a
version number ( "major * 1000 + minor" ). In list context it
returns "major" and "minor" as two separate integers.
Throws an exception upon failure.
EXPORTS
Nothing by default. Following subroutines can be exported:
parse_headers
parse_request
parse_request_line
parse_response
parse_response_line
parse_version
SEE ALSO
<
http://www.w3.org/Protocols/rfc2616/rfc2616.html>
HTTP::Request
HTTP::Response
HTTP::Message
HTTP::Parser
AUTHOR
Christian Hansen "
[email protected]"
COPYRIGHT
This program is free software, you can redistribute it and/or modify it
under the same terms as Perl itself.