\section{\module{httplib} ---
         HTTP protocol client}

\declaremodule{standard}{httplib}
\modulesynopsis{HTTP and HTTPS protocol client (requires sockets).}

\indexii{HTTP}{protocol}
\index{HTTP!\module{httplib} (standard module)}

This module defines classes which implement the client side of the
HTTP and HTTPS protocols.  It is normally not used directly --- the
module \refmodule{urllib}\refstmodindex{urllib} uses it to handle URLs
that use HTTP and HTTPS.

\begin{notice}
  HTTPS support is only available if the \refmodule{socket} module was
  compiled with SSL support.
\end{notice}

\begin{notice}
  The public interface for this module changed substantially in Python
  2.0.  The \class{HTTP} class is retained only for backward
  compatibility with 1.5.2.  It should not be used in new code.  Refer
  to the online docstrings for usage.
\end{notice}

The module provides the following classes:

\begin{classdesc}{HTTPConnection}{host\optional{, port\optional{, strict}}}
An \class{HTTPConnection} instance represents one transaction with an HTTP
server.  It should be instantiated passing it a host and optional port number.
If no port number is passed, the port is extracted from the host string if it
has the form \code{\var{host}:\var{port}}, else the default HTTP port (80) is
used.  When True, the optional parameter \var{strict}
causes \code{BadStatusLine} to be raised if the status line can't be parsed
as a valid HTTP/1.0 or 1.1 status line. 

For example, the following calls all create instances that connect to
the server at the same host and port:

\begin{verbatim}
>>> h1 = httplib.HTTPConnection('www.cwi.nl')
>>> h2 = httplib.HTTPConnection('www.cwi.nl:80')
>>> h3 = httplib.HTTPConnection('www.cwi.nl', 80)
\end{verbatim}
\versionadded{2.0}
\end{classdesc}

\begin{classdesc}{HTTPSConnection}{host\optional{, port\optional{,
		  key_file\optional{, cert_file\optional{, strict}}}}}
A subclass of \class{HTTPConnection} that uses SSL for communication with
secure servers.  Default port is \code{443}.
\var{key_file} is
the name of a PEM formatted file that contains your private
key. \var{cert_file} is a PEM formatted certificate chain file.

\warning{This does not do any certificate verification!}

\versionadded{2.0}
\end{classdesc}

\begin{classdesc}{HTTPResponse}{sock\optional{, debuglevel=0}\optional{, strict=0}}
Class whose instances are returned upon successful connection.  Not
instantiated directly by user.
\versionadded{2.0}
\end{classdesc}

The following exceptions are raised as appropriate:

\begin{excdesc}{HTTPException}
The base class of the other exceptions in this module.  It is a
subclass of \exception{Exception}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{NotConnected}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{InvalidURL}
A subclass of \exception{HTTPException}, raised if a port is given and is
either non-numeric or empty.
\versionadded{2.3}
\end{excdesc}

\begin{excdesc}{UnknownProtocol}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{UnknownTransferEncoding}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{UnimplementedFileMode}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{IncompleteRead}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{ImproperConnectionState}
A subclass of \exception{HTTPException}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{CannotSendRequest}
A subclass of \exception{ImproperConnectionState}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{CannotSendHeader}
A subclass of \exception{ImproperConnectionState}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{ResponseNotReady}
A subclass of \exception{ImproperConnectionState}.
\versionadded{2.0}
\end{excdesc}

\begin{excdesc}{BadStatusLine}
A subclass of \exception{HTTPException}.  Raised if a server responds with a
HTTP status code that we don't understand.
\versionadded{2.0}
\end{excdesc}

The constants defined in this module are:

\begin{datadesc}{HTTP_PORT}
  The default port for the HTTP protocol (always \code{80}).
\end{datadesc}

\begin{datadesc}{HTTPS_PORT}
  The default port for the HTTPS protocol (always \code{443}).
\end{datadesc}

and also the following constants for integer status codes:

\begin{tableiii}{l|c|l}{constant}{Constant}{Value}{Definition}
  \lineiii{CONTINUE}{\code{100}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.1.1}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.1}}
  \lineiii{SWITCHING_PROTOCOLS}{\code{101}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.1.2}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.2}}
  \lineiii{PROCESSING}{\code{102}}
    {WEBDAV, \ulink{RFC 2518, Section 10.1}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_102}}

  \lineiii{OK}{\code{200}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.1}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}}
  \lineiii{CREATED}{\code{201}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.2}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2}}
  \lineiii{ACCEPTED}{\code{202}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.3}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3}}
  \lineiii{NON_AUTHORITATIVE_INFORMATION}{\code{203}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.4}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.4}}
  \lineiii{NO_CONTENT}{\code{204}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.5}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}}
  \lineiii{RESET_CONTENT}{\code{205}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.6}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.6}}
  \lineiii{PARTIAL_CONTENT}{\code{206}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.2.7}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.7}}
  \lineiii{MULTI_STATUS}{\code{207}}
    {WEBDAV \ulink{RFC 2518, Section 10.2}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_207}}
  \lineiii{IM_USED}{\code{226}}
    {Delta encoding in HTTP, \rfc{3229}, Section 10.4.1}

  \lineiii{MULTIPLE_CHOICES}{\code{300}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.1}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.1}}
  \lineiii{MOVED_PERMANENTLY}{\code{301}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.2}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2}}
  \lineiii{FOUND}{\code{302}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.3}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3}}
  \lineiii{SEE_OTHER}{\code{303}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.4}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4}}
  \lineiii{NOT_MODIFIED}{\code{304}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.5}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}}
  \lineiii{USE_PROXY}{\code{305}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.6}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.6}}
  \lineiii{TEMPORARY_REDIRECT}{\code{307}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.3.8}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8}}

  \lineiii{BAD_REQUEST}{\code{400}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.1}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}}
  \lineiii{UNAUTHORIZED}{\code{401}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.2}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2}}
  \lineiii{PAYMENT_REQUIRED}{\code{402}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.3}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}}
  \lineiii{FORBIDDEN}{\code{403}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.4}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}}
  \lineiii{NOT_FOUND}{\code{404}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.5}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}}
  \lineiii{METHOD_NOT_ALLOWED}{\code{405}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.6}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6}}
  \lineiii{NOT_ACCEPTABLE}{\code{406}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.7}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7}}
  \lineiii{PROXY_AUTHENTICATION_REQUIRED}
    {\code{407}}{HTTP/1.1, \ulink{RFC 2616, Section 10.4.8}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.8}}
  \lineiii{REQUEST_TIMEOUT}{\code{408}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.9}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.9}}
  \lineiii{CONFLICT}{\code{409}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.10}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10}}
  \lineiii{GONE}{\code{410}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.11}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11}}
  \lineiii{LENGTH_REQUIRED}{\code{411}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.12}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.12}}
  \lineiii{PRECONDITION_FAILED}{\code{412}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.13}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13}}
  \lineiii{REQUEST_ENTITY_TOO_LARGE}
    {\code{413}}{HTTP/1.1, \ulink{RFC 2616, Section 10.4.14}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14}}
  \lineiii{REQUEST_URI_TOO_LONG}{\code{414}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.15}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.15}}
  \lineiii{UNSUPPORTED_MEDIA_TYPE}{\code{415}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.16}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.16}}
  \lineiii{REQUESTED_RANGE_NOT_SATISFIABLE}{\code{416}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.17}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.17}}
  \lineiii{EXPECTATION_FAILED}{\code{417}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.4.18}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.18}}
  \lineiii{UNPROCESSABLE_ENTITY}{\code{422}}
    {WEBDAV, \ulink{RFC 2518, Section 10.3}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_422}}
  \lineiii{LOCKED}{\code{423}}
    {WEBDAV \ulink{RFC 2518, Section 10.4}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_423}}
  \lineiii{FAILED_DEPENDENCY}{\code{424}}
    {WEBDAV, \ulink{RFC 2518, Section 10.5}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_424}}
  \lineiii{UPGRADE_REQUIRED}{\code{426}}
    {HTTP Upgrade to TLS, \rfc{2817}, Section 6}

  \lineiii{INTERNAL_SERVER_ERROR}{\code{500}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.1}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1}}
  \lineiii{NOT_IMPLEMENTED}{\code{501}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.2}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2}}
  \lineiii{BAD_GATEWAY}{\code{502}}
    {HTTP/1.1 \ulink{RFC 2616, Section 10.5.3}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3}}
  \lineiii{SERVICE_UNAVAILABLE}{\code{503}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.4}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4}}
  \lineiii{GATEWAY_TIMEOUT}{\code{504}}
    {HTTP/1.1 \ulink{RFC 2616, Section 10.5.5}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.5}}
  \lineiii{HTTP_VERSION_NOT_SUPPORTED}{\code{505}}
    {HTTP/1.1, \ulink{RFC 2616, Section 10.5.6}
      {http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.6}}
  \lineiii{INSUFFICIENT_STORAGE}{\code{507}}
    {WEBDAV, \ulink{RFC 2518, Section 10.6}
      {http://www.webdav.org/specs/rfc2518.html#STATUS_507}}
  \lineiii{NOT_EXTENDED}{\code{510}}
    {An HTTP Extension Framework, \rfc{2774}, Section 7}
\end{tableiii}

\begin{datadesc}{responses}
This dictionary maps the HTTP 1.1 status codes to the W3C names.

Example: \code{httplib.responses[httplib.NOT_FOUND]} is \code{'Not Found'}.
\versionadded{2.5}
\end{datadesc}


\subsection{HTTPConnection Objects \label{httpconnection-objects}}

\class{HTTPConnection} instances have the following methods:

\begin{methoddesc}{request}{method, url\optional{, body\optional{, headers}}}
This will send a request to the server using the HTTP request method
\var{method} and the selector \var{url}.  If the \var{body} argument is
present, it should be a string of data to send after the headers are finished.
The header Content-Length is automatically set to the correct value.
The \var{headers} argument should be a mapping of extra HTTP headers to send
with the request.
\end{methoddesc}

\begin{methoddesc}{getresponse}{}
Should be called after a request is sent to get the response from the server.
Returns an \class{HTTPResponse} instance.
\note{Note that you must have read the whole response before you can send a new
request to the server.}
\end{methoddesc}

\begin{methoddesc}{set_debuglevel}{level}
Set the debugging level (the amount of debugging output printed).
The default debug level is \code{0}, meaning no debugging output is
printed.
\end{methoddesc}

\begin{methoddesc}{connect}{}
Connect to the server specified when the object was created.
\end{methoddesc}

\begin{methoddesc}{close}{}
Close the connection to the server.
\end{methoddesc}

As an alternative to using the \method{request()} method described above,
you can also send your request step by step, by using the four functions
below.

\begin{methoddesc}{putrequest}{request, selector\optional{,
skip\_host\optional{, skip_accept_encoding}}}
This should be the first call after the connection to the server has
been made.  It sends a line to the server consisting of the
\var{request} string, the \var{selector} string, and the HTTP version
(\code{HTTP/1.1}).  To disable automatic sending of \code{Host:} or
\code{Accept-Encoding:} headers (for example to accept additional
content encodings), specify \var{skip_host} or \var{skip_accept_encoding}
with non-False values.
\versionchanged[\var{skip_accept_encoding} argument added]{2.4}
\end{methoddesc}

\begin{methoddesc}{putheader}{header, argument\optional{, ...}}
Send an \rfc{822}-style header to the server.  It sends a line to the
server consisting of the header, a colon and a space, and the first
argument.  If more arguments are given, continuation lines are sent,
each consisting of a tab and an argument.
\end{methoddesc}

\begin{methoddesc}{endheaders}{}
Send a blank line to the server, signalling the end of the headers.
\end{methoddesc}

\begin{methoddesc}{send}{data}
Send data to the server.  This should be used directly only after the
\method{endheaders()} method has been called and before
\method{getresponse()} is called.
\end{methoddesc}

\subsection{HTTPResponse Objects \label{httpresponse-objects}}

\class{HTTPResponse} instances have the following methods and attributes:

\begin{methoddesc}{read}{\optional{amt}}
Reads and returns the response body, or up to the next \var{amt} bytes.
\end{methoddesc}

\begin{methoddesc}{getheader}{name\optional{, default}}
Get the contents of the header \var{name}, or \var{default} if there is no
matching header.
\end{methoddesc}

\begin{methoddesc}{getheaders}{}
Return a list of (header, value) tuples. \versionadded{2.4}
\end{methoddesc}

\begin{datadesc}{msg}
  A \class{mimetools.Message} instance containing the response headers.
\end{datadesc}

\begin{datadesc}{version}
  HTTP protocol version used by server.  10 for HTTP/1.0, 11 for HTTP/1.1.
\end{datadesc}

\begin{datadesc}{status}
  Status code returned by server.
\end{datadesc}

\begin{datadesc}{reason}
  Reason phrase returned by server.
\end{datadesc}


\subsection{Examples \label{httplib-examples}}

Here is an example session that uses the \samp{GET} method:

\begin{verbatim}
>>> import httplib
>>> conn = httplib.HTTPConnection("www.python.org")
>>> conn.request("GET", "/index.html")
>>> r1 = conn.getresponse()
>>> print r1.status, r1.reason
200 OK
>>> data1 = r1.read()
>>> conn.request("GET", "/parrot.spam")
>>> r2 = conn.getresponse()
>>> print r2.status, r2.reason
404 Not Found
>>> data2 = r2.read()
>>> conn.close()
\end{verbatim}

Here is an example session that shows how to \samp{POST} requests:

\begin{verbatim}
>>> import httplib, urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
...            "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
>>> conn.request("POST", "/cgi-bin/query", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK
>>> data = response.read()
>>> conn.close()
\end{verbatim}
