httplib

HTTP/1.1 client library

<intro stuff goes here> <other stuff, too>

HTTPConnection goes through a number of “states”, which define when a client may legally make another request or fetch the response for a particular request. This diagram details these state transitions:

(null)

HTTPConnection()

v

Idle

putrequest()

v

Request-started

( putheader() )* endheaders()

v

Request-sent

response = getresponse()

v

Unread-response [Response-headers-read]
|____________________ | | | response.read() | putrequest() v v
Idle Req-started-unread-response
______/|

/ |

response.read() | | ( putheader() )* endheaders()
v v
Request-started Req-sent-unread-response

response.read()

v

Request-sent

This diagram presents the following rules:

– a second request may not be started until {response-headers-read} – a response [object] cannot be retrieved until {request-sent} – there is no differentiation between an unread response body and a

partially read response body
Note: this enforcement is applied by the HTTPConnection class. The
HTTPResponse class does not enforce this state machine, which implies sophisticated clients may accelerate the request/response pipeline. Caution should be taken, though: accelerating the states beyond the above pattern may imply knowledge of the server’s connection-close behavior for certain requests. For example, it is impossible to tell whether the server will close the connection UNTIL the response headers have been read; this means that further requests cannot be placed into the pipeline until it is known that the server will NOT be closing the connection.

Logical State __state __response ————- ——- ———- Idle _CS_IDLE None Request-started _CS_REQ_STARTED None Request-sent _CS_REQ_SENT None Unread-response _CS_IDLE <response_class> Req-started-unread-response _CS_REQ_STARTED <response_class> Req-sent-unread-response _CS_REQ_SENT <response_class>

Functions

FakeSocket(sock, sslobj)
StringIO StringIO([s]) – Return a StringIO-like stream for reading or writing
urlsplit(url[, scheme, allow_fragments]) Parse a URL into 5 components: <scheme>://<netloc>/<path>?<query>#<fragment> Return a 5-tuple: (scheme, netloc, path, query, fragment).

Classes

HTTP([host, port, strict]) Compatibility class with httplib.py from 1.5.
HTTPConnection(host[, port, strict, ...])
HTTPMessage(fp[, seekable])
HTTPResponse(sock[, debuglevel, strict, ...])
HTTPS([host, port, key_file, cert_file, ...]) Compatibility with 1.5 httplib interface
HTTPSConnection(host[, port, key_file, ...]) This class allows communication via SSL.
LineAndFileWrapper(line, file) A limited file-like object for HTTP/0.9 responses.
array Return a new array whose items are restricted by typecode, and initialized from the optional initializer value, which must be a list, string or iterable over elements of the appropriate type.