De http://code.google.com/p/httplib2/wiki/Examples espoir) contribuera
Cookies
Lorsque vous automatisez quelque chose, vous avez souvent besoin de « login » pour maintenir une sorte de séance/état avec le serveur. Parfois, ceci est réalisé avec une authentification basée sur des formulaires et des cookies. Vous publiez un formulaire sur le serveur et il répond avec un cookie dans l'en-tête HTTP entrant. Vous devez renvoyer ce cookie au serveur dans les demandes suivantes pour conserver l'état ou maintenir une session active.
Voici un exemple de gestion des cookies lors de la publication de votre message HTTP.
En premier lieu, permet d'importer les modules que nous utiliserons:
import urllib
import httplib2
Maintenant, permet de définir les données que nous aurons besoin. Dans ce cas, nous faisons un post de formulaire avec 2 champs représentant un nom d'utilisateur et un mot de passe.
url = 'http://www.example.com/login'
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
Maintenant, nous pouvons envoyer la requête HTTP:
http = httplib2.Http()
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
À ce stade, notre variable « réponse » contient un dictionnaire des champs d'en-tête HTTP qui ont été renvoyés par le serveur. Si un cookie était renvoyé, un champ "set-cookie" contenant la valeur du cookie s'afficherait. Nous voulons profiter de cette valeur et le mettre dans l'en-tête HTTP sortant pour nos demandes suivantes:
headers['Cookie'] = response['set-cookie']
Maintenant, nous pouvons envoyer une demande à l'aide de cette tête et il contiendra le cookie, de sorte que le serveur peut nous reconnaître.
Alors ... voici le tout dans un script. Nous se connecter à un site, puis faire une autre demande en utilisant le cookie que nous avons reçu:
#!/usr/bin/env python
import urllib
import httplib2
http = httplib2.Http()
url = 'http://www.example.com/login'
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
headers = {'Cookie': response['set-cookie']}
url = 'http://www.example.com/home'
response, content = http.request(url, 'GET', headers=headers)