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. |
Exceptions¶
BadStatusLine (line) |
|
CannotSendHeader |
|
CannotSendRequest |
|
HTTPException |
|
ImproperConnectionState |
|
IncompleteRead (partial[, expected]) |
|
InvalidURL |
|
LineTooLong (line_type) |
|
NotConnected |
|
ResponseNotReady |
|
UnimplementedFileMode |
|
UnknownProtocol (version) |
|
UnknownTransferEncoding |
|
error |
alias of HTTPException |