| Httplib2 |
| |
| -------------------------------------------------------------------- |
| Introduction |
| |
| 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. |
| |
| |
| For more information on this module, see: |
| |
| http://bitworking.org/projects/httplib2/ |
| |
| |
| -------------------------------------------------------------------- |
| Installation |
| |
| The httplib2 module is shipped as a distutils package. To install |
| the library, unpack the distribution archive, and issue the following |
| command: |
| |
| $ python setup.py install |
| |
| |
| -------------------------------------------------------------------- |
| Usage |
| A simple retrieval: |
| |
| 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: |
| |
| 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. |
| |
| 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. |
| |
| |
| -------------------------------------------------------------------- |
| Httplib2 Software License |
| |
| Copyright (c) 2006 by Joe Gregorio |
| |
| Permission is hereby granted, free of charge, to any person |
| obtaining a copy of this software and associated documentation |
| files (the "Software"), to deal in the Software without restriction, |
| including without limitation the rights to use, copy, modify, merge, |
| publish, distribute, sublicense, and/or sell copies of the Software, |
| and to permit persons to whom the Software is furnished to do so, |
| subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be |
| included in all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
| OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| SOFTWARE. |
| |