2010-03-03 6 views

risposta

38

Dal 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

Credito in cui il credito è dovuto: questo è stato strappato direttamente da http://docs.python.org/release/2.6/library/httplib.html (o 2.5.2 o precedente, non è cambiato molto nel corso degli anni) – dland

+0

I param devono essere in quel formato? possono essere testo grezzo? –

+0

Sì, puoi passare il testo non elaborato come parametri, "urllib.urlencode' si prende solo cura dell'URL che codifica la stringa da passare, se lo stampi vedrai che è solo una stringa – Ole

10

uno più semplice, utilizzando solo 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() 

Trovato in documenti Python per urllib module

+5

scusa, ma questo probabilmente fa un HTTP GET, non un POST – hko

+3

@hko No, proviene dall'esempio POST su quella pagina urllib. Nota che i parametri sono aggiunti con ', params' invece di'% params'. –