2010-11-12 14 views

Odpowiedz

2

Dobrym sposobem reprezentowania takich danych jest użycie JSON. Python ma moduł json, który pomoże.

8

Użyj kodu urllib.urlencode, aby zakodować słownik jako POST.

import urllib 
import urllib2 

mydict = {'key1': 'value1', 'key2': 'value2'} 
encoded_dict = urllib.urlencode(mydict) 

request = urllib2.Request(myurl, encoded_dict) 
# now make the request 
response = request.urlopen().read() 
+0

To będzie pracować dla strun, ale może być problem w przypadku innych typów danych. –

+0

To była pierwsza odpowiedź, do której doszedłem i wygląda na to, że wystąpił niewielki problem, gdy wypróbowałem ją jako wpisaną. Dla mnie działało: response = urllib2.urlopen (request) .read() – Paul

0
import urllib2 
import json 

pydict = {'list': [{'k1': '60411', 'k2': 'val'}], 'Id': '775'} 

jsondata = json.dumps(pydict) 

postreq = urllib2.Request(_url, jsondata) 
postreq.add_header('Content-Type', 'application/json') 
resp = urllib2.urlopen(postreq) 
print "resp:", resp.read() 
2

Istnieje również requests biblioteka:

payload = {'key1': 'value1', 'key2': 'value2'} 
r = requests.post("http://httpbin.org/post", data=payload)