2010-03-03 17 views

Répondre

38

De l'Python documentation:

>>> 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() 
+29

Crédit lorsque le crédit est dû: il a été arraché directement de http://docs.python.org/release/2.6/library/httplib.html (ou 2.5.2 ou plus tôt, il n'a pas beaucoup changé au fil des ans) – dland

+0

Les paramètres doivent-ils être dans ce format? peuvent-ils être du texte brut? –

+0

Oui, vous pouvez passer en texte brut en tant que paramètres, 'urllib.urlencode' prend juste soin de l'encodage url de la chaîne à passer, si vous l'imprimez, vous verrez que c'est juste une chaîne – Ole

10

Une plus simple, en utilisant seulement 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 docs Python pour urllib module

+5

désolé, mais cela fait probablement un HTTP GET, pas un POST – hko

+3

@hko Non, c'est à partir de l'exemple POST sur cette page urllib. Notez que les params sont ajoutés avec ', params' au lieu de'% params'. –