web-dev-qa-db-fra.com

Comment utiliser httplib de Python pour envoyer un POST à une URL, avec un dictionnaire de paramètres?

Je veux juste une fonction qui peut prendre 2 paramètres:

  • l'URL vers POST to
  • un dictionnaire de paramètres

Comment cela peut-il être fait avec httplib? Merci.

20
TIMEX

De la documentation Python :

>>> import httplib, urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
...            "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
>>> conn.request("POST", "/cgi-bin/query", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK
>>> data = response.read()
>>> conn.close()
41
TIMEX

Un plus simple, en utilisant simplement urllib:

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.example.org/cgi-bin/query", params)
print f.read()

Trouvé dans Python docs for module urllib

11
Beli