You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.9 KiB
114 lines
2.9 KiB
4 months ago
|
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
|