Second pass at adding key files
This commit is contained in:
		
							
								
								
									
										493
									
								
								site/glist/templates/help/GT/WWW/http.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										493
									
								
								site/glist/templates/help/GT/WWW/http.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,493 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>GT::WWW::http - HTTP interface for GT::WWW</title>
 | 
			
		||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
			
		||||
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
			
		||||
/* $MVD$:fontset("Arial","Arial") */
 | 
			
		||||
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
			
		||||
/* $MVD$:fontset("Algerian","Algerian") */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    font-family: Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size: small;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h5 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h6 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ul {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ol {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
li {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
th {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dd {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dt {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-H1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : 14.0pt;
 | 
			
		||||
    background-color : transparent;
 | 
			
		||||
    background-image : none;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 12.0pt;
 | 
			
		||||
    color : blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indent {
 | 
			
		||||
    font-family : "Verdana, Arial, sans-serif";
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indent {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre.programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE-programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : normal;
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 6.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 10.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-BODY {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body style="background-color: white">
 | 
			
		||||
 | 
			
		||||
<p><a name="__index__"></a></p>
 | 
			
		||||
<!-- INDEX BEGIN -->
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#name">NAME</a></li>
 | 
			
		||||
	<li><a href="#synopsis">SYNOPSIS</a></li>
 | 
			
		||||
	<li><a href="#description">DESCRIPTION</a></li>
 | 
			
		||||
	<li><a href="#methods">METHODS</a></li>
 | 
			
		||||
	<ul>
 | 
			
		||||
 | 
			
		||||
		<li><a href="#header">header</a></li>
 | 
			
		||||
		<li><a href="#http_10">http_10</a></li>
 | 
			
		||||
		<li><a href="#strict">strict</a></li>
 | 
			
		||||
		<li><a href="#no_redirect">no_redirect</a></li>
 | 
			
		||||
		<li><a href="#redirects">redirects</a></li>
 | 
			
		||||
		<li><a href="#response">response</a></li>
 | 
			
		||||
		<li><a href="#cancel">cancel</a></li>
 | 
			
		||||
	</ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#return_values">RETURN VALUES</a></li>
 | 
			
		||||
	<ul>
 | 
			
		||||
 | 
			
		||||
		<li><a href="#status">Status</a></li>
 | 
			
		||||
		<li><a href="#content">Content</a></li>
 | 
			
		||||
		<li><a href="#headers">Headers</a></li>
 | 
			
		||||
	</ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#see_also">SEE ALSO</a></li>
 | 
			
		||||
	<li><a href="#maintainer">MAINTAINER</a></li>
 | 
			
		||||
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
			
		||||
	<li><a href="#version">VERSION</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- INDEX END -->
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h1><a name="name">NAME</a></h1>
 | 
			
		||||
<p>GT::WWW::http - HTTP interface for GT::WWW</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="synopsis">SYNOPSIS</a></h1>
 | 
			
		||||
<pre>
 | 
			
		||||
    use GT::WWW;
 | 
			
		||||
    my $www = GT::WWW->new();
 | 
			
		||||
    $www->protocol('http');
 | 
			
		||||
    # any valid GT::WWW methods here
 | 
			
		||||
    # ...
 | 
			
		||||
    my $header = $www->header;
 | 
			
		||||
    $header->header("Some-Http-Header" => $value);
 | 
			
		||||
    $header->delete_header("Some-Other-Http-Header");</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $response = $www->get() or die "Could not connect to server: " . $www->error;</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $status = $response->status;
 | 
			
		||||
    my $response_code = int $status; # For example, 200, 404, 500, etc.
 | 
			
		||||
    my $response_str  = "$status"; # For example, 'OK', 'Not Found', 'Internal Server Error', etc.</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    if ($status) {
 | 
			
		||||
        # This will be true if the status code is a successful one - in other
 | 
			
		||||
        # words, true for 2xx responses, false for others
 | 
			
		||||
        print "Response successful. Content:\n$response\n";
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        die "Request was not successful ($response_code $response_str)\n";
 | 
			
		||||
    }</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="description">DESCRIPTION</a></h1>
 | 
			
		||||
<p>GT::WWW::http handles HTTP connections for GT::WWW.  It uses some overloading
 | 
			
		||||
to assist in the ease of use without sacrificing functionality.</p>
 | 
			
		||||
<p>This document does not cover the basics of a GT::WWW object; those are covered
 | 
			
		||||
by <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html">the GT::WWW manpage</a>.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="methods">METHODS</a></h1>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="header">header</a></h2>
 | 
			
		||||
<p>This method returns the GT::WWW::http::Header object that will be (or has been)
 | 
			
		||||
sent to the HTTP server.  See <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">the GT::WWW::http::Header manpage</a> for information on using
 | 
			
		||||
and manipulating a header object.</p>
 | 
			
		||||
<p>Note that you can add headers without first getting a header object by simply
 | 
			
		||||
specifying the headers as arguments to header().  Normally, you would call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $www->header->header('X-Foo' => 'bar');</pre>
 | 
			
		||||
<p>This shortcut allows for:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $www->header('X-Foo' => 'bar');</pre>
 | 
			
		||||
<p>Check <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">the GT::WWW::http::Header manpage</a> for valid arguments to the <code>header()</code> method.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="http_10">http_10</a></h2>
 | 
			
		||||
<p>This method can be used <em>before</em> initiating a request on the object to force
 | 
			
		||||
HTTP/1.0 communication with the HTTP server.  By default HTTP/1.1 connections
 | 
			
		||||
are used.  Note that HTTP/1.1 is strongly recommended as this module supports
 | 
			
		||||
keep-alive connections only when using HTTP/1.1.  To force HTTP/1.0
 | 
			
		||||
communication, pass a true value to this method, or a false value to use the
 | 
			
		||||
default HTTP/1.1 connections.  Returns true if HTTP/1.0 connections will be
 | 
			
		||||
used.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="strict">strict</a></h2>
 | 
			
		||||
<p>This works as described in GT::WWW.  Specifically, in addition to the loose
 | 
			
		||||
query string restrictions, this allows relative URL Location: redirects
 | 
			
		||||
(HTTP/1.1 specifically states that Location: redirects MUST be absolute).</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="no_redirect">no_redirect</a></h2>
 | 
			
		||||
<p>This method is used before a request to indicate that automatic, seemless
 | 
			
		||||
redirection should <strong>not</strong> take place.  By default, when a server responds with
 | 
			
		||||
an acceptable, properly-formed 3xx response allowing a redirection, this module
 | 
			
		||||
will automatically perform the redirection, unless this option has been
 | 
			
		||||
enabled.  To enable, call this method with a true value, or to disable, a false
 | 
			
		||||
value.  Returns true if automatic redirection is enabled.</p>
 | 
			
		||||
<p>Note that redirections will only be performed on GET requests.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="redirects">redirects</a></h2>
 | 
			
		||||
<p>If redirections are enabled (i.e. the no_redirect option has not been turned
 | 
			
		||||
on), you can call the <code>redirects()</code> method to get a list of response objects
 | 
			
		||||
created while performing redirections.  Typically this will be just one, but
 | 
			
		||||
more are possible.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="response">response</a></h2>
 | 
			
		||||
<p>Returns the response object for the last request.  When automatic redirection
 | 
			
		||||
is enabled, this will be the response object for the final request.  The
 | 
			
		||||
response object can be used is multiple ways, which are described below, in the
 | 
			
		||||
<a href="#return_values">RETURN VALUES</a> section, and in <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Response.html">the GT::WWW::http::Response manpage</a>.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="cancel">cancel</a></h2>
 | 
			
		||||
<p>This works as described in <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#cancel">cancel in the GT::WWW manpage</a>, with one exception: if cancelling a
 | 
			
		||||
request immediately before a redirect takes place, only the current request is
 | 
			
		||||
cancelled - the redirect still occurs.  Note that cancelling is likely to be a
 | 
			
		||||
resource hit in such a case because the connection cannot be reused and a new
 | 
			
		||||
one must be established - typically, to the same server.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="return_values">RETURN VALUES</a></h1>
 | 
			
		||||
<p>The return values of the <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#get"><code>get()</code></a>, <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#head"><code>head()</code></a>,
 | 
			
		||||
and <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#post"><code>post()</code></a> methods are simply the response object for the
 | 
			
		||||
request, which can also be obtained by calling the <a href="#response"><code>response()</code></a>
 | 
			
		||||
method after completing the request.</p>
 | 
			
		||||
<p>The full documentation for the response object is covered in
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Response.html">the GT::WWW::http::Response manpage</a>, however the below description is provided for a
 | 
			
		||||
brief overview.  The following examples assume that ``<code>$response</code>'' is an object
 | 
			
		||||
that has been obtained by calling get(), head(), post(), or response().</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="status">Status</a></h2>
 | 
			
		||||
<p>The status of the request is available via the ->status method of the response
 | 
			
		||||
object.  It is made up of three pieces of data - status code, status string,
 | 
			
		||||
and success.</p>
 | 
			
		||||
<p>To get the status code (e.g. 500, 200, etc.), simply use the status as a number:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $status = int($response->status);</pre>
 | 
			
		||||
<p>To get the status string (e.g. ``500 Internal Server Error'', ``200 OK''), use the
 | 
			
		||||
status as a string:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $status = "" . $response->status;</pre>
 | 
			
		||||
<p>And finally, to get the success of the request, simply use status in boolean
 | 
			
		||||
context:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    if ($response->status) {</pre>
 | 
			
		||||
<p>Success for HTTP is defined by any 200-level response status code.  A request
 | 
			
		||||
that returns ``200 OK'' will be pass the above if statement, while a request that
 | 
			
		||||
returned ``500 Internal Server Error'' will fail.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="content">Content</a></h2>
 | 
			
		||||
<p>The content of the last request is available by simply using the response
 | 
			
		||||
object as a string:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $content = "$response";</pre>
 | 
			
		||||
<p>You should take note, however, that if you are using the
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#chunk"><code>chunk()</code></a> method no content will be available in this way.</p>
 | 
			
		||||
<p>Also note that the response object is an object, not a string, so anything
 | 
			
		||||
beyond basic string comparison/concatenation should not occur on the response
 | 
			
		||||
object itself.  See <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Response.html#caveats">CAVEATS in the GT::WWW::http::Response manpage</a> for more details.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="headers">Headers</a></h2>
 | 
			
		||||
<p>The <code>header()</code> method of the response object returns a GT::WWW::http::Header
 | 
			
		||||
object which gives you easy access to the headers returned by the server with
 | 
			
		||||
the request.</p>
 | 
			
		||||
<p>As a special shortcut, calling <code>header()</code> with arguments will call the
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html#header">header()</a> method of the header object with the
 | 
			
		||||
arguments provided.  This allows you to optionally change this:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $location = $response->header->header('Location');</pre>
 | 
			
		||||
<p>into the shorter and clearer:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $location = $response->header('Location');</pre>
 | 
			
		||||
<p>Calling <code>header()</code> without arguments returns the header object for the response.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="see_also">SEE ALSO</a></h1>
 | 
			
		||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html">the GT::WWW manpage</a>
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Response.html">the GT::WWW::http::Response manpage</a>
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">the GT::WWW::http::Header manpage</a>
 | 
			
		||||
RFC 2616: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="maintainer">MAINTAINER</a></h1>
 | 
			
		||||
<p>Jason Rhinelander</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
			
		||||
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
			
		||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="version">VERSION</a></h1>
 | 
			
		||||
<p>Revision: $Id: http.pm,v 1.31 2005/04/08 19:20:00 jagerman Exp $</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										584
									
								
								site/glist/templates/help/GT/WWW/http/Header.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										584
									
								
								site/glist/templates/help/GT/WWW/http/Header.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,584 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>GT::WWW::http::Header - Module for GT::WWW::http request/response headers.</title>
 | 
			
		||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
			
		||||
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
			
		||||
/* $MVD$:fontset("Arial","Arial") */
 | 
			
		||||
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
			
		||||
/* $MVD$:fontset("Algerian","Algerian") */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    font-family: Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size: small;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h5 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h6 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ul {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ol {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
li {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
th {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dd {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dt {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-H1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : 14.0pt;
 | 
			
		||||
    background-color : transparent;
 | 
			
		||||
    background-image : none;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 12.0pt;
 | 
			
		||||
    color : blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indent {
 | 
			
		||||
    font-family : "Verdana, Arial, sans-serif";
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indent {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre.programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE-programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : normal;
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 6.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 10.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-BODY {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body style="background-color: white">
 | 
			
		||||
 | 
			
		||||
<p><a name="__index__"></a></p>
 | 
			
		||||
<!-- INDEX BEGIN -->
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#name">NAME</a></li>
 | 
			
		||||
	<li><a href="#synopsis">SYNOPSIS</a></li>
 | 
			
		||||
	<li><a href="#description">DESCRIPTION</a></li>
 | 
			
		||||
	<li><a href="#methods">METHODS</a></li>
 | 
			
		||||
	<ul>
 | 
			
		||||
 | 
			
		||||
		<li><a href="#header">header</a></li>
 | 
			
		||||
		<li><a href="#header_words">header_words</a></li>
 | 
			
		||||
		<li><a href="#split_words">split_words</a></li>
 | 
			
		||||
		<li><a href="#contains">contains</a></li>
 | 
			
		||||
		<li><a href="#join_words">join_words</a></li>
 | 
			
		||||
		<li><a href="#delete_header_word">delete_header_word</a></li>
 | 
			
		||||
		<li><a href="#delete_header">delete_header</a></li>
 | 
			
		||||
		<li><a href="#format_headers">format_headers</a></li>
 | 
			
		||||
		<li><a href="#clear_headers">clear_headers</a></li>
 | 
			
		||||
	</ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#see_also">SEE ALSO</a></li>
 | 
			
		||||
	<li><a href="#maintainer">MAINTAINER</a></li>
 | 
			
		||||
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
			
		||||
	<li><a href="#version">VERSION</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- INDEX END -->
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h1><a name="name">NAME</a></h1>
 | 
			
		||||
<p>GT::WWW::http::Header - Module for GT::WWW::http request/response headers.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="synopsis">SYNOPSIS</a></h1>
 | 
			
		||||
<p>Typically:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    # Assuming $www is a GT::WWW::http object
 | 
			
		||||
    my $request_header = $www->header;</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    # Set a header:
 | 
			
		||||
    $request_header->header('Some-Http-Header' => 'Header value');</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    # After making a request:
 | 
			
		||||
    my $response_header = $www->response->header;
 | 
			
		||||
    # -- or --
 | 
			
		||||
    my $response_header = $response->header; # $response is the return of, e.g. $www->get</pre>
 | 
			
		||||
<p>Much more advanced headers can be set and determined, using the various methods
 | 
			
		||||
available as described below.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="description">DESCRIPTION</a></h1>
 | 
			
		||||
<p>This module provides an easy to use yet powerful header retrieval/manipulation
 | 
			
		||||
object suitable for most HTTP headers.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="methods">METHODS</a></h1>
 | 
			
		||||
<p>First, a note about the methods described which add/change/delete headers: such
 | 
			
		||||
methods should only be called on a request header, and only before making a
 | 
			
		||||
request.  Although nothing prevents you from making changes to the request
 | 
			
		||||
header after having made the request, or from changing the headers of a
 | 
			
		||||
response header object, such behaviour should be considered very bad practise
 | 
			
		||||
and is <strong>strongly</strong> discouraged.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="header">header</a></h2>
 | 
			
		||||
<p>This is the most commonly used method as it is used both to add and retrieve
 | 
			
		||||
headers, depending on its usage.  The examples below assume the following
 | 
			
		||||
header:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    Date: Sun, 12 Jan 2003 08:21:21 GMT
 | 
			
		||||
    Server: Apache
 | 
			
		||||
    Keep-Alive: timeout=15, max=100
 | 
			
		||||
    Connection: Keep-Alive
 | 
			
		||||
    Content-Type: text/html
 | 
			
		||||
    Content-Encoding: gzip
 | 
			
		||||
    Content-Length: 3215
 | 
			
		||||
    X-Foo: bar1
 | 
			
		||||
    X-Foo: bar2, bar3</pre>
 | 
			
		||||
<p>With no arguments, a list of all the header names is returned.  Given the
 | 
			
		||||
example, the following list would be returned:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    ('Date', 'Server', 'Keep-Alive', 'Connection', 'Content-Type', 'Content-Encoding', 'Content-Length', 'X-Foo', 'X-Foo')</pre>
 | 
			
		||||
<p>With a single argument, a list of <code>value(s)</code> for headers of that name are
 | 
			
		||||
returned.  In scalar context, only the first value is returned. In list
 | 
			
		||||
context, a list of all values is returned.  Note that the header named passed
 | 
			
		||||
in is case-insensitive.</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $server = $header->header('server'); # returns 'Apache'
 | 
			
		||||
    my $foo = $header->header('X-Foo'); # returns 'bar1'
 | 
			
		||||
    my @foo = $header->header('x-Foo'); # returns ('bar1', 'bar2, bar3')</pre>
 | 
			
		||||
<p>Finally, when more than one argument is provided, header values are set.  At
 | 
			
		||||
its simplest level, it takes a list of key => value pairs (NOT a hash, since
 | 
			
		||||
duplicate keys are possible) of headers to set.  So, to set the headers
 | 
			
		||||
'Server' and 'Content-Length' above at once, you could call:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->header(Server => 'Apache', 'Content-Length' => 3215);</pre>
 | 
			
		||||
<p>Or, if you prefer:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->header(Server => 'Apache');
 | 
			
		||||
    $header->header('Content-Length' => 3215);</pre>
 | 
			
		||||
<p>Note that the order in which headers are added is preserved, for times when the
 | 
			
		||||
order of headers is important.</p>
 | 
			
		||||
<p><strong>WARNING</strong>: Before reading the below information, you should first know that it
 | 
			
		||||
describes advanced usage of the <code>header()</code> method and requires have a grasp of
 | 
			
		||||
the intricacies of HTTP headers; the following is _not_ required knowledge for
 | 
			
		||||
typical GT::WWW use.</p>
 | 
			
		||||
<p>Consider the above Keep-Alive header an example.  Instead of specifying:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->header('Keep-Alive' => 'timeout=15, max=100');</pre>
 | 
			
		||||
<p>you could alternately write it as:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->header('Keep-Alive' => [timeout => 15, max => 100]);</pre>
 | 
			
		||||
<p>This allows you a more pragmatic approach when you already have some sort of
 | 
			
		||||
data structure of the header options.  You can go a step further with this, by
 | 
			
		||||
specifying <code>undef</code> as the value:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    # Set the second X-Foo header in the example:
 | 
			
		||||
    $header->header('X-Foo' => [bar2 => undef, bar3 => undef]);</pre>
 | 
			
		||||
<p><code>header()</code> also allows you to set values such as:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    image/gif;q=0.2</pre>
 | 
			
		||||
<p>As can be seen in this example:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    Accept: image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1</pre>
 | 
			
		||||
<p>To do so, specify the suboption value as another array reference.  The first
 | 
			
		||||
element of the array reference is usually undef, while the remaining are the
 | 
			
		||||
k=v pairs in the segment.  So, in the above header, the 'image/gif;q=0.2' section
 | 
			
		||||
would be specified as:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    'image/gif' => [undef, q => 0.2]</pre>
 | 
			
		||||
<p>(If a segment such as ``foo=bar;bar=foo'' is ever needed, the <code>undef</code> would be
 | 
			
		||||
changed to <code>"bar"</code>.)</p>
 | 
			
		||||
<p>So, piecing it all together, the Accept header shown above could be specified
 | 
			
		||||
like this:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->header(
 | 
			
		||||
        Accept => [
 | 
			
		||||
            'image/png'  => undef,
 | 
			
		||||
            'image/jpeg' => undef,
 | 
			
		||||
            'image/gif'  => [undef, q => 0.2],
 | 
			
		||||
            '*/*'        => [undef, q => 0.1]
 | 
			
		||||
        ]
 | 
			
		||||
    );</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="header_words">header_words</a></h2>
 | 
			
		||||
<p>When you need to see it a header value contains a particular ``word'', this
 | 
			
		||||
method is the one to use.  As an example, consider this header:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2, bar3</pre>
 | 
			
		||||
<p>In order to determine whether or not ``bar2'' has been specified as an X-Foo
 | 
			
		||||
value, you could attempt some sort of regex - or you could just call this
 | 
			
		||||
method.  The return value splits up the header in such a way as to be useful to
 | 
			
		||||
determine the exact information contained within the header.</p>
 | 
			
		||||
<p>The method takes a case-insensitive header name, just like the single-argument
 | 
			
		||||
form of header().</p>
 | 
			
		||||
<p>A even-numbered hash-<em>like</em> list is always returned - though each element of
 | 
			
		||||
that list depends on the content of the header.  First of all, if the header
 | 
			
		||||
specified does not exist, you'll get an empty list back.</p>
 | 
			
		||||
<p>Assuming that the header does exist, it will first be broken up by <code>,</code>.</p>
 | 
			
		||||
<p>The even-indexed (0, 2, 4, ...) elements of the list are the keys, while the
 | 
			
		||||
odd numbered elements are the values associated with those keys - or undef if
 | 
			
		||||
there is no value (as above; an example with values is shown below).</p>
 | 
			
		||||
<p>So, using the above X-Foo header example, calling this method with <code>'X-Foo'</code>
 | 
			
		||||
as an argument would give you back the list:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    (bar => undef, bar2 => undef, bar3 => undef)</pre>
 | 
			
		||||
<p>Getting a little more complicated, consider the following header:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2=foo, bar3</pre>
 | 
			
		||||
<p>Because of the ``=foo'' part, the list returned would now be:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    (bar => undef, bar2 => "foo", bar3 => undef)</pre>
 | 
			
		||||
<p>Quoting of values is also permitted, so the following would be parsed correctly
 | 
			
		||||
with <code>'1;2,3=4"5\6'</code> being the value of bar2:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2="1;2,3=4\"5\\6", bar3</pre>
 | 
			
		||||
<p>Getting more complicated, this method also handles complex values containing
 | 
			
		||||
more than one piece of information.  A good example of this is in content type
 | 
			
		||||
weighting used by most browsers.  As a real life example (generated by
 | 
			
		||||
the Phoenix web browser):</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    Accept: video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1</pre>
 | 
			
		||||
<p>Working that into the X-Foo example, consider this header:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2=foo, bar3;foo1=24;foo2=10</pre>
 | 
			
		||||
<p>In this case, the value for bar3 will become an array reference to handle the
 | 
			
		||||
multiple pieces of information in the third part:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    (bar => undef, bar2 => "foo", bar3 => [undef, foo1 => 24, foo2 => 10])</pre>
 | 
			
		||||
<p>(If you've read the advanced section of the <a href="#header"><code>header()</code></a>
 | 
			
		||||
documentation, and this looks familiar, you're right - the return value of this
 | 
			
		||||
function, if put in an array reference, is completely compatible with a
 | 
			
		||||
<code>header()</code> value.)</p>
 | 
			
		||||
<p>The <code>undef</code> value at the beginning of the array reference is rarely anything other
 | 
			
		||||
than <code>undef</code>, but it <em>could</em> be, if a header such as this were encountered:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar=foo,foo1=10</pre>
 | 
			
		||||
<p>That would return:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    (bar => ["foo", foo1 => 10])</pre>
 | 
			
		||||
<p>One additional thing to note is that <code>header_words()</code> returns the header words
 | 
			
		||||
for <strong>all</strong> matching headers.  Thus if the following two headers were set:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2=foo
 | 
			
		||||
    X-Foo: bar3</pre>
 | 
			
		||||
<p>You would get the same return as if this header was set (shown above):</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2=foo, bar3</pre>
 | 
			
		||||
<p>A good example usage of this is for a file download.  To get the filename, you
 | 
			
		||||
would do something like:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my %cd = $header->header_words('Content-Disposition');
 | 
			
		||||
    my $filename;
 | 
			
		||||
    if ($cd{filename}) { $filename = $cd{filename} }
 | 
			
		||||
    else               { $filename = "unknown" }</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="split_words">split_words</a></h2>
 | 
			
		||||
<p>This can be called as object method, class method, or function - it takes a
 | 
			
		||||
single argument, a string, which it proceeds to split up as described for the
 | 
			
		||||
above <code>header_words()</code> method.  Note that this knows nothing about header names -
 | 
			
		||||
it simply knows how to break a header value into the above format.</p>
 | 
			
		||||
<p>This method is used internally by header_words(), but can be used separately if
 | 
			
		||||
desired.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="contains">contains</a></h2>
 | 
			
		||||
<p>This method takes two arguments: a header, and a header word.  It returns true
 | 
			
		||||
if the header word passed is found in the header specified. For example, the
 | 
			
		||||
following would return true:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->contains('X-Foo' => 'bar2')</pre>
 | 
			
		||||
<p>for any of these headers:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar2
 | 
			
		||||
    X-Foo: bar, bar2, bar3
 | 
			
		||||
    X-Foo: bar, bar2=10, bar3
 | 
			
		||||
    X-Foo: bar, bar2=10;q=0.3, bar3</pre>
 | 
			
		||||
<p>but not for either of these:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar3=bar2
 | 
			
		||||
    X-Foo: bar, bar3;bar2=10</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="join_words">join_words</a></h2>
 | 
			
		||||
<p><code>join_words()</code> does the opposite of split_words(). That is, it takes a value such
 | 
			
		||||
as might be returned by split_words(), and joins it up properly, quoting if
 | 
			
		||||
necessary.  This is called internally when creating the actual header, and can
 | 
			
		||||
be called separately at a method or function if desired.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="delete_header_word">delete_header_word</a></h2>
 | 
			
		||||
<p>This takes a header and header word, and proceeds to remove any occurances of
 | 
			
		||||
the header word from the header specified.</p>
 | 
			
		||||
<p>After calling:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    $header->delete_header_word('X-Foo', 'bar2');</pre>
 | 
			
		||||
<p>this header:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar2;foo=bar, bar3</pre>
 | 
			
		||||
<p>would become:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    X-Foo: bar, bar3</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="delete_header">delete_header</a></h2>
 | 
			
		||||
<p>This takes a list of header names.  The headers specified are completely
 | 
			
		||||
removed.
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
 | 
			
		||||
=head2 replace_header</pre>
 | 
			
		||||
<p>This 2 or more arguments in exactly the same way as header(), however all the
 | 
			
		||||
specified headers are deleted (assuming they exist) before being readded.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="format_headers">format_headers</a></h2>
 | 
			
		||||
<p>This returns a properly formatted (lines are CRLF delimited) header.  If you
 | 
			
		||||
use the header as a string (i.e. <code>"$header"</code>), this method will be internally
 | 
			
		||||
called, and so generally does not need to be called directly.</p>
 | 
			
		||||
<p>The returned string has the final blank line that identifies the end of the
 | 
			
		||||
header.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="clear_headers">clear_headers</a></h2>
 | 
			
		||||
<p>This deletes all headers.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="see_also">SEE ALSO</a></h1>
 | 
			
		||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http.html">the GT::WWW::http manpage</a>
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html">the GT::WWW manpage</a>
 | 
			
		||||
RFC 2616: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="maintainer">MAINTAINER</a></h1>
 | 
			
		||||
<p>Jason Rhinelander</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
			
		||||
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
			
		||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="version">VERSION</a></h1>
 | 
			
		||||
<p>Revision: $Id: Header.pm,v 1.8 2004/02/17 01:33:08 jagerman Exp $</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										478
									
								
								site/glist/templates/help/GT/WWW/http/Response.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										478
									
								
								site/glist/templates/help/GT/WWW/http/Response.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,478 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>GT::WWW::http::Response::Status - Overloaded
 | 
			
		||||
response objects for HTTP request data.</title>
 | 
			
		||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
			
		||||
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
			
		||||
/* $MVD$:fontset("Arial","Arial") */
 | 
			
		||||
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
			
		||||
/* $MVD$:fontset("Algerian","Algerian") */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    font-family: Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size: small;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h5 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h6 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ul {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ol {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
li {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
th {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dd {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dt {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-H1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : 14.0pt;
 | 
			
		||||
    background-color : transparent;
 | 
			
		||||
    background-image : none;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 12.0pt;
 | 
			
		||||
    color : blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indent {
 | 
			
		||||
    font-family : "Verdana, Arial, sans-serif";
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indent {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre.programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE-programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : normal;
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 6.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 10.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-BODY {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body style="background-color: white">
 | 
			
		||||
 | 
			
		||||
<p><a name="__index__"></a></p>
 | 
			
		||||
<!-- INDEX BEGIN -->
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#name">NAME</a></li>
 | 
			
		||||
	<li><a href="#synopsis">SYNOPSIS</a></li>
 | 
			
		||||
	<li><a href="#description">DESCRIPTION</a></li>
 | 
			
		||||
	<li><a href="#content">CONTENT</a></li>
 | 
			
		||||
	<li><a href="#methods">METHODS</a></li>
 | 
			
		||||
	<ul>
 | 
			
		||||
 | 
			
		||||
		<li><a href="#content">content</a></li>
 | 
			
		||||
		<li><a href="#status">status</a></li>
 | 
			
		||||
		<li><a href="#header">header</a></li>
 | 
			
		||||
	</ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#caveats">CAVEATS</a></li>
 | 
			
		||||
	<li><a href="#see_also">SEE ALSO</a></li>
 | 
			
		||||
	<li><a href="#maintainer">MAINTAINER</a></li>
 | 
			
		||||
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
			
		||||
	<li><a href="#version">VERSION</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- INDEX END -->
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h1><a name="name">NAME</a></h1>
 | 
			
		||||
<p>GT::WWW::http::Response and GT::WWW::http::Response::Status - Overloaded
 | 
			
		||||
response objects for HTTP request data.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="synopsis">SYNOPSIS</a></h1>
 | 
			
		||||
<pre>
 | 
			
		||||
    # ($www is continued from GT::WWW::http SYNOPSIS)</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $response = $www->get(); # or post(), or head()
 | 
			
		||||
    # -- or, after having called get(), post() or head(): --
 | 
			
		||||
    my $response = $www->response();</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $status   = $response->status();</pre>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $content = "$response";
 | 
			
		||||
    my $response_code = int($status); # i.e. 200, 404, 500
 | 
			
		||||
    my $response_str = "$status"; # i.e. 'OK', 'Not Found', 'Internal Server Error'
 | 
			
		||||
    if ($status) { # True for 2xx requests, false otherwise (e.g. 404, 500, etc.)
 | 
			
		||||
        ...
 | 
			
		||||
    }</pre>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="description">DESCRIPTION</a></h1>
 | 
			
		||||
<p>GT::WWW::http::Response objects are returned by the <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#get"><code>get()</code></a>,
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#post"><code>post()</code></a>, and <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#head"><code>head()</code></a> methods of GT::WWW
 | 
			
		||||
HTTP requests (and derivatives - i.e. HTTPS), or by calling
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http.html#response"><code>response()</code></a> after having made such a request.  The
 | 
			
		||||
objects are overloaded in order to provide a simple interface to the response,
 | 
			
		||||
while still having all the information available.</p>
 | 
			
		||||
<p>A response object always returns true in boolean context, allowing you to do
 | 
			
		||||
things like <code>$www->get($url) or die;</code> - even when a page is empty, or
 | 
			
		||||
contains just '0'.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="content">CONTENT</a></h1>
 | 
			
		||||
<p>In addition to the methods described below, the way to simply access the data
 | 
			
		||||
returned by the server is to simply use it like a string - for example,
 | 
			
		||||
printing it, concatenating it with another string, or quoting it.</p>
 | 
			
		||||
<p>You should, however, take note that when using the <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html#chunk"><code>chunk()</code></a>
 | 
			
		||||
option for an HTTP request, the content will not be available.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="methods">METHODS</a></h1>
 | 
			
		||||
<p>For simple requests, often the content alone is enough.  The following methods
 | 
			
		||||
are used to determine any other information available about the response.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="content">content</a></h2>
 | 
			
		||||
<p>Returns the content of the HTTP response.  Note that this returns the exact
 | 
			
		||||
same value as using the object in double quotes.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="status">status</a></h2>
 | 
			
		||||
<p>Returns the response status object for the request.  This object provides three
 | 
			
		||||
pieces of information, and has no public methods.  Instead, the data is
 | 
			
		||||
retrieved based on the context of the object.</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $status = $response->status;</pre>
 | 
			
		||||
<p>(N.B. Though the examples below use a <code>$status</code> variable, there is no reason
 | 
			
		||||
they couldn't be written to use <code>$response->status</code> instead.)</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><strong><a name="item_numeric_status">numeric status</a></strong><br />
 | 
			
		||||
</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
The numeric status of an HTTP request (e.g. 200, 404, 500) is available simply
 | 
			
		||||
by using the status object as a number.
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $numeric_status = int $status;</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
<p></p>
 | 
			
		||||
<dt><strong><a name="item_string_status">string status</a></strong><br />
 | 
			
		||||
</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
The string status of an HTTP request (e.g. ``OK'', ``Not Found'', ``Internal Server
 | 
			
		||||
Error'') is available by using the status object as a string (e.g. printing it,
 | 
			
		||||
or concatenating it with another string).
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<pre>
 | 
			
		||||
    # Assign the status string to a variable:
 | 
			
		||||
    my $status_string = "$status";</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<pre>
 | 
			
		||||
    # Print out the status string:
 | 
			
		||||
    print $status;</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<pre>
 | 
			
		||||
    # To get a string such as "500 Internal Server Error":
 | 
			
		||||
    my $string = int($status) . " " . $status;</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
<p></p>
 | 
			
		||||
<dt><strong><a name="item_boolean_status">boolean status</a></strong><br />
 | 
			
		||||
</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
In order to quickly determine whether or not a request was successful, you can
 | 
			
		||||
use the status object in a boolean context.
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<p>Success is determined by the numeric status of the response.  Any 2xx status
 | 
			
		||||
(usually 200 OK, but there are others) counts as a successful response, while
 | 
			
		||||
any other status counts as a failure.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
<dd>
 | 
			
		||||
<pre>
 | 
			
		||||
    if ($status) { print "Request successful!" }
 | 
			
		||||
    else         { print "Request failed!"     }</pre>
 | 
			
		||||
</dd>
 | 
			
		||||
<p></p></dl>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h2><a name="header">header</a></h2>
 | 
			
		||||
<p>This method, called without arguments, returns the
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">header</a> object for the response.</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $header = $response->header;</pre>
 | 
			
		||||
<p>If this method is called with arguments, those arguments are passed to the
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html#header"><code>header()</code></a> method of the header object.  This
 | 
			
		||||
allows this useful shortcut:</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $some_header_value = $response->header("Some-Header");</pre>
 | 
			
		||||
<p>instead of the alternative (which also works):</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    my $some_header_value = $response->header->header("Some-Header");</pre>
 | 
			
		||||
<p>Information on header object usage is contained in <a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">the GT::WWW::http::Header manpage</a>.</p>
 | 
			
		||||
<p>Note that although a header object allows for header manipulation, changing the
 | 
			
		||||
headers of a response object should be considered bad practise, and is strongly
 | 
			
		||||
discouraged.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="caveats">CAVEATS</a></h1>
 | 
			
		||||
<p>Although the response object _works_ like a string, keep in mind that it is
 | 
			
		||||
still an object, and thus a reference.  If you intend to pass the data to
 | 
			
		||||
another subroutine expecting a string, it is recommended that you force the
 | 
			
		||||
content into string form, either by quoting the variable (<code>"$var"</code>) or by
 | 
			
		||||
calling the <code>content()</code> method (<code>$var->content</code>).  Not doing so can lead to
 | 
			
		||||
unexpected results, particularly in cases where another subroutine may
 | 
			
		||||
differentiate between a string and a reference, and not just use the value as a
 | 
			
		||||
string.</p>
 | 
			
		||||
<p>Also, in terms of speed, obtaining the content (not the object) into another
 | 
			
		||||
variable (either via <code>"$var"</code> or <code>$var->content</code>) can make quite a
 | 
			
		||||
substantial difference when several string comparison operations are performed.
 | 
			
		||||
The reason is simply that every time the object is used is a string, the
 | 
			
		||||
content method is called, which can amount to a significant slowdown.</p>
 | 
			
		||||
<p>Although string operations that change the string (i.e. s///) appear to work,
 | 
			
		||||
they in fact clobber the reference and turn your variable into an ordinary
 | 
			
		||||
string.  This should not be done - if the string needs to be modified, take a
 | 
			
		||||
copy of it first, and modify the copy.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="see_also">SEE ALSO</a></h1>
 | 
			
		||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW.html">the GT::WWW manpage</a>
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http.html">the GT::WWW::http manpage</a>
 | 
			
		||||
<a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http/Header.html">the GT::WWW::http::Header manpage</a>
 | 
			
		||||
RFC 2616: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="maintainer">MAINTAINER</a></h1>
 | 
			
		||||
<p>Jason Rhinelander</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
			
		||||
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
			
		||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="version">VERSION</a></h1>
 | 
			
		||||
<p>Revision: $Id: Response.pm,v 1.8 2004/08/04 19:23:07 jagerman Exp $</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										322
									
								
								site/glist/templates/help/GT/WWW/https.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								site/glist/templates/help/GT/WWW/https.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,322 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
<head>
 | 
			
		||||
<title>GT::WWW::https - HTTPS handling for GT::WWW</title>
 | 
			
		||||
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
			
		||||
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
			
		||||
/* $MVD$:fontset("Arial","Arial") */
 | 
			
		||||
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
			
		||||
/* $MVD$:fontset("Algerian","Algerian") */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    font-family: Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size: small;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p {
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h3 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : medium;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h5 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : blue;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
h6 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ul {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ol {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
li {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
th {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
td {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dl {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dd {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dt {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
code {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family : Courier;
 | 
			
		||||
    font-size : small;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-H1 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : bold;
 | 
			
		||||
    font-size : 14.0pt;
 | 
			
		||||
    background-color : transparent;
 | 
			
		||||
    background-image : none;
 | 
			
		||||
    color : maroon;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H2 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 12.0pt;
 | 
			
		||||
    color : blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indent {
 | 
			
		||||
    font-family : "Verdana, Arial, sans-serif";
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indent {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : circle;
 | 
			
		||||
    list-style-position : inside;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pre.programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE-programlisting {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    list-style-type : disc;
 | 
			
		||||
    margin-left : 16.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-PRE {
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-note {
 | 
			
		||||
    margin-left : 28.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-H4 {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-weight : normal;
 | 
			
		||||
    font-size : 9.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
    margin-left : 6.0pt;
 | 
			
		||||
    margin-top : -14.0pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    font-size : 10.0pt;
 | 
			
		||||
    color : black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mvd-BODY {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    background-color : white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
p.indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.mvd-P-indentnobullet {
 | 
			
		||||
    font-family : Verdana, Arial, sans-serif;
 | 
			
		||||
    list-style-type : none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body style="background-color: white">
 | 
			
		||||
 | 
			
		||||
<p><a name="__index__"></a></p>
 | 
			
		||||
<!-- INDEX BEGIN -->
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
	<li><a href="#name">NAME</a></li>
 | 
			
		||||
	<li><a href="#description">DESCRIPTION</a></li>
 | 
			
		||||
	<li><a href="#requirements">REQUIREMENTS</a></li>
 | 
			
		||||
	<li><a href="#see_also">SEE ALSO</a></li>
 | 
			
		||||
	<li><a href="#maintainer">MAINTAINER</a></li>
 | 
			
		||||
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
			
		||||
	<li><a href="#version">VERSION</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- INDEX END -->
 | 
			
		||||
 | 
			
		||||
<hr />
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<h1><a name="name">NAME</a></h1>
 | 
			
		||||
<p>GT::WWW::https - HTTPS handling for GT::WWW</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="description">DESCRIPTION</a></h1>
 | 
			
		||||
<p>This module is a simple subclass of GT::WWW::http used by GT::WWW to enable
 | 
			
		||||
HTTPS access as opposed to HTTP access.  Thus GT::WWW::http should be consulted
 | 
			
		||||
instead of this documentation.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="requirements">REQUIREMENTS</a></h1>
 | 
			
		||||
<p>GT::WWW HTTPS support requires GT::Socket::Client::SSLHandle, which in turn
 | 
			
		||||
requires the Net::SSLeay library.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="see_also">SEE ALSO</a></h1>
 | 
			
		||||
<p><a href="glist.cgi?do=admin_gtdoc&topic=/GT/WWW/http.html">the GT::WWW::http manpage</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="maintainer">MAINTAINER</a></h1>
 | 
			
		||||
<p>Jason Rhinelander</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
			
		||||
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
			
		||||
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
			
		||||
<p>
 | 
			
		||||
</p>
 | 
			
		||||
<hr />
 | 
			
		||||
<h1><a name="version">VERSION</a></h1>
 | 
			
		||||
<p>Revision: $Id: https.pm,v 1.3 2004/01/13 01:35:20 jagerman Exp $</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user