| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- 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.
|