| Introduction |
| ============ |
| |
| httplib2 is a comprehensive HTTP client library, httplib2.py supports many |
| features left out of other HTTP libraries. |
| |
| ### HTTP and HTTPS |
| |
| HTTPS support is only available if the socket module was |
| compiled with SSL support. |
| |
| ### Keep-Alive |
| |
| Supports HTTP 1.1 Keep-Alive, keeping the socket open and |
| performing multiple requests over the same connection if |
| possible. |
| |
| ### Authentication |
| |
| The following three types of HTTP Authentication are |
| supported. These can be used over both HTTP and HTTPS. |
| |
| * Digest |
| * Basic |
| * WSSE |
| |
| ### Caching |
| |
| The module can optionally operate with a private cache that |
| understands the Cache-Control: header and uses both the ETag |
| and Last-Modified cache validators. |
| |
| ### All Methods |
| |
| The module can handle any HTTP request method, not just GET |
| and POST. |
| |
| ### Redirects |
| |
| Automatically follows 3XX redirects on GETs. |
| |
| ### Compression |
| |
| Handles both 'deflate' and 'gzip' types of compression. |
| |
| ### Lost update support |
| |
| Automatically adds back ETags into PUT requests to resources |
| we have already cached. This implements Section 3.2 of |
| Detecting the Lost Update Problem Using Unreserved Checkout. |
| |
| ### Unit Tested |
| |
| A large and growing set of unit tests. |
| |
| |
| Installation |
| ============ |
| |
| |
| $ pip install httplib2 |
| |
| |
| Usage |
| ===== |
| |
| A simple retrieval: |
| |
| ```python |
| import httplib2 |
| h = httplib2.Http(".cache") |
| (resp_headers, content) = h.request("http://example.org/", "GET") |
| ``` |
| |
| The 'content' is the content retrieved from the URL. The content |
| is already decompressed or unzipped if necessary. |
| |
| To PUT some content to a server that uses SSL and Basic authentication: |
| |
| ```python |
| import httplib2 |
| h = httplib2.Http(".cache") |
| h.add_credentials('name', 'password') |
| (resp, content) = h.request("https://example.org/chapter/2", |
| "PUT", body="This is text", |
| headers={'content-type':'text/plain'} ) |
| ``` |
| |
| Use the Cache-Control: header to control how the caching operates. |
| |
| ```python |
| import httplib2 |
| h = httplib2.Http(".cache") |
| (resp, content) = h.request("http://bitworking.org/", "GET") |
| ... |
| (resp, content) = h.request("http://bitworking.org/", "GET", |
| headers={'cache-control':'no-cache'}) |
| ``` |
| |
| The first request will be cached and since this is a request |
| to bitworking.org it will be set to be cached for two hours, |
| because that is how I have my server configured. Any subsequent |
| GET to that URI will return the value from the on-disk cache |
| and no request will be made to the server. You can use the |
| Cache-Control: header to change the caches behavior and in |
| this example the second request adds the Cache-Control: |
| header with a value of 'no-cache' which tells the library |
| that the cached copy must not be used when handling this request. |
| |
| More example usage can be found at: |
| |
| * https://github.com/httplib2/httplib2/wiki/Examples |
| * https://github.com/httplib2/httplib2/wiki/Examples-Python3 |