Post JSON mit Python-Requests

Ich POST müssen ein JSON von einem client zu einem server. Ich bin mit Python 2.7.1 und simplejson. Der client-Anfragen. Der server ist CherryPy. Ich kann eine hart-codierte JSON vom server (code wird nicht angezeigt), aber wenn ich versuche, eine POST, eine JSON an den server, bekomme ich "400 Bad Request".

Hier ist mein client-code:

data = {'sender':   'Alice',
    'receiver': 'Bob',
    'message':  'We did it!'}
data_json = simplejson.dumps(data)
payload = {'json_payload': data_json}
r = requests.post("http://localhost:8080", data=payload)

Hier ist der server-code.

class Root(object):

    def __init__(self, content):
        self.content = content
        print self.content  # this works

    exposed = True

    def GET(self):
        cherrypy.response.headers['Content-Type'] = 'application/json'
        return simplejson.dumps(self.content)

    def POST(self):
        self.content = simplejson.loads(cherrypy.request.body.read())

Irgendwelche Ideen?

Ich war mit eine abgespeckte version von einem Beispiel direkt aus der Dokumentation.
Mein Kommentar steht immer noch - CherryPy nicht nennen, Klasse __init__ Methoden mit einem content argument (und hat nicht den Anspruch, in der link, den Sie liefern). In der detaillierten Beispiel Sie haben der Benutzer den code zum aufrufen __init__ und liefert die Argumente, die wir hier noch nicht gesehen also habe ich keine Ahnung, in welchem Zustand sich Ihr Objekt, wenn Ihr # this works Kommentar relevant ist.
Bitten Sie um die Linie zu sehen, wo die Instanz erzeugt wird?
ja, war ich versucht zu starten, Ihr Beispiel, um es zu testen, und ich nicht sicher war, wie Sie instanziieren wurden.
Der code hat sich geändert. Ich bin jetzt zu schaffen, ohne das zusätzliche argument. cherrypy.quickstart(Root(), '/', conf).

InformationsquelleAutor Charles R | 2012-03-16

Schreibe einen Kommentar