title: How to POST JSON data with Python Requests?
body: <p>I need to POST a JSON from a client to a server. I'm using Python 2.7.1 and simplejson. The client is using Requests. The server is CherryPy. I can GET a hard-coded JSON from the server (code not shown), but when I try to POST a JSON to the server, I get "400 Bad Request".</p>
  
  <p>Here is my client code:</p>
  
  <pre><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)
  </code></pre>
  
  <p>Here is the server code.</p>
  
  <pre><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())
  </code></pre>
  
  <p>Any ideas?</p>