summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README217
1 files changed, 217 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..6b5217d
--- /dev/null
+++ b/README
@@ -0,0 +1,217 @@
+NAME
+ Net::HTTP - Low-level HTTP connection (client)
+
+SYNOPSIS
+ use Net::HTTP;
+ my $s = Net::HTTP->new(Host => "www.perl.com") || die $@;
+ $s->write_request(GET => "/", 'User-Agent' => "Mozilla/5.0");
+ my($code, $mess, %h) = $s->read_response_headers;
+
+ while (1) {
+ my $buf;
+ my $n = $s->read_entity_body($buf, 1024);
+ die "read failed: $!" unless defined $n;
+ last unless $n;
+ print $buf;
+ }
+
+DESCRIPTION
+ The `Net::HTTP' class is a low-level HTTP client. An instance of the
+ `Net::HTTP' class represents a connection to an HTTP server. The HTTP
+ protocol is described in RFC 2616. The `Net::HTTP' class supports
+ `HTTP/1.0' and `HTTP/1.1'.
+
+ `Net::HTTP' is a sub-class of `IO::Socket::INET'. You can mix the
+ methods described below with reading and writing from the socket
+ directly. This is not necessary a good idea, unless you know what you
+ are doing.
+
+ The following methods are provided (in addition to those of
+ `IO::Socket::INET'):
+
+ $s = Net::HTTP->new( %options )
+ The `Net::HTTP' constructor method takes the same options as
+ `IO::Socket::INET''s as well as these:
+
+ Host: Initial host attribute value
+ KeepAlive: Initial keep_alive attribute value
+ SendTE: Initial send_te attribute_value
+ HTTPVersion: Initial http_version attribute value
+ PeerHTTPVersion: Initial peer_http_version attribute value
+ MaxLineLength: Initial max_line_length attribute value
+ MaxHeaderLines: Initial max_header_lines attribute value
+
+ The `Host' option is also the default for `IO::Socket::INET''s
+ `PeerAddr'. The `PeerPort' defaults to 80 if not provided.
+
+ The `Listen' option provided by `IO::Socket::INET''s constructor
+ method is not allowed.
+
+ If unable to connect to the given HTTP server then the constructor
+ returns `undef' and $@ contains the reason. After a successful
+ connect, a `Net:HTTP' object is returned.
+
+ $s->host
+ Get/set the default value of the `Host' header to send. The $host
+ must not be set to an empty string (or `undef') for HTTP/1.1.
+
+ $s->keep_alive
+ Get/set the *keep-alive* value. If this value is TRUE then the
+ request will be sent with headers indicating that the server should
+ try to keep the connection open so that multiple requests can be
+ sent.
+
+ The actual headers set will depend on the value of the
+ `http_version' and `peer_http_version' attributes.
+
+ $s->send_te
+ Get/set the a value indicating if the request will be sent with a
+ "TE" header to indicate the transfer encodings that the server can
+ choose to use. The list of encodings announced as accepted by this
+ client depends on availability of the following modules:
+ `Compress::Raw::Zlib' for *deflate*, and `IO::Compress::Gunzip' for
+ *gzip*.
+
+ $s->http_version
+ Get/set the HTTP version number that this client should announce.
+ This value can only be set to "1.0" or "1.1". The default is "1.1".
+
+ $s->peer_http_version
+ Get/set the protocol version number of our peer. This value will
+ initially be "1.0", but will be updated by a successful
+ read_response_headers() method call.
+
+ $s->max_line_length
+ Get/set a limit on the length of response line and response header
+ lines. The default is 8192. A value of 0 means no limit.
+
+ $s->max_header_length
+ Get/set a limit on the number of header lines that a response can
+ have. The default is 128. A value of 0 means no limit.
+
+ $s->format_request($method, $uri, %headers, [$content])
+ Format a request message and return it as a string. If the headers
+ do not include a `Host' header, then a header is inserted with the
+ value of the `host' attribute. Headers like `Connection' and
+ `Keep-Alive' might also be added depending on the status of the
+ `keep_alive' attribute.
+
+ If $content is given (and it is non-empty), then a `Content-Length'
+ header is automatically added unless it was already present.
+
+ $s->write_request($method, $uri, %headers, [$content])
+ Format and send a request message. Arguments are the same as for
+ format_request(). Returns true if successful.
+
+ $s->format_chunk( $data )
+ Returns the string to be written for the given chunk of data.
+
+ $s->write_chunk($data)
+ Will write a new chunk of request entity body data. This method
+ should only be used if the `Transfer-Encoding' header with a value
+ of `chunked' was sent in the request. Note, writing zero-length data
+ is a no-op. Use the write_chunk_eof() method to signal end of entity
+ body data.
+
+ Returns true if successful.
+
+ $s->format_chunk_eof( %trailers )
+ Returns the string to be written for signaling EOF when a
+ `Transfer-Encoding' of `chunked' is used.
+
+ $s->write_chunk_eof( %trailers )
+ Will write eof marker for chunked data and optional trailers. Note
+ that trailers should not really be used unless is was signaled with
+ a `Trailer' header.
+
+ Returns true if successful.
+
+ ($code, $mess, %headers) = $s->read_response_headers( %opts )
+ Read response headers from server and return it. The $code is the 3
+ digit HTTP status code (see HTTP::Status) and $mess is the textual
+ message that came with it. Headers are then returned as key/value
+ pairs. Since key letter casing is not normalized and the same key
+ can even occur multiple times, assigning these values directly to a
+ hash is not wise. Only the $code is returned if this method is
+ called in scalar context.
+
+ As a side effect this method updates the 'peer_http_version'
+ attribute.
+
+ Options might be passed in as key/value pairs. There are currently
+ only two options supported; `laxed' and `junk_out'.
+
+ The `laxed' option will make read_response_headers() more forgiving
+ towards servers that have not learned how to speak HTTP properly.
+ The `laxed' option is a boolean flag, and is enabled by passing in a
+ TRUE value. The `junk_out' option can be used to capture bad header
+ lines when `laxed' is enabled. The value should be an array
+ reference. Bad header lines will be pushed onto the array.
+
+ The `laxed' option must be specified in order to communicate with
+ pre-HTTP/1.0 servers that don't describe the response outcome or the
+ data they send back with a header block. For these servers
+ peer_http_version is set to "0.9" and this method returns (200,
+ "Assumed OK").
+
+ The method will raise an exception (die) if the server does not
+ speak proper HTTP or if the `max_line_length' or `max_header_length'
+ limits are reached. If the `laxed' option is turned on and
+ `max_line_length' and `max_header_length' checks are turned off,
+ then no exception will be raised and this method will always return
+ a response code.
+
+ $n = $s->read_entity_body($buf, $size);
+ Reads chunks of the entity body content. Basically the same
+ interface as for read() and sysread(), but the buffer offset
+ argument is not supported yet. This method should only be called
+ after a successful read_response_headers() call.
+
+ The return value will be `undef' on read errors, 0 on EOF, -1 if no
+ data could be returned this time, otherwise the number of bytes
+ assigned to $buf. The $buf is set to "" when the return value is -1.
+
+ You normally want to retry this call if this function returns either
+ -1 or `undef' with `$!' as EINTR or EAGAIN (see Errno). EINTR can
+ happen if the application catches signals and EAGAIN can happen if
+ you made the socket non-blocking.
+
+ This method will raise exceptions (die) if the server does not speak
+ proper HTTP. This can only happen when reading chunked data.
+
+ %headers = $s->get_trailers
+ After read_entity_body() has returned 0 to indicate end of the
+ entity body, you might call this method to pick up any trailers.
+
+ $s->_rbuf
+ Get/set the read buffer content. The read_response_headers() and
+ read_entity_body() methods use an internal buffer which they will
+ look for data before they actually sysread more from the socket
+ itself. If they read too much, the remaining data will be left in
+ this buffer.
+
+ $s->_rbuf_length
+ Returns the number of bytes in the read buffer. This should always
+ be the same as:
+
+ length($s->_rbuf)
+
+ but might be more efficient.
+
+SUBCLASSING
+ The read_response_headers() and read_entity_body() will invoke the
+ sysread() method when they need more data. Subclasses might want to
+ override this method to control how reading takes place.
+
+ The object itself is a glob. Subclasses should avoid using hash key
+ names prefixed with `http_' and `io_'.
+
+SEE ALSO
+ LWP, IO::Socket::INET, Net::HTTP::NB
+
+COPYRIGHT
+ Copyright 2001-2003 Gisle Aas.
+
+ This library is free software; you can redistribute it and/or modify it
+ under the same terms as Perl itself.
+