How to POST JSON data with Python Requests?
How to POST JSON data with Python Requests?
Starting with Requests version 2.4.2, you can use the json=
parameter (which takes a dictionary) instead of data=
(which takes a string) in the call:
>>> import requests
>>> r = requests.post(http://httpbin.org/post, json={key: value})
>>> r.status_code
200
>>> r.json()
{args: {},
data: {key: value},
files: {},
form: {},
headers: {Accept: */*,
Accept-Encoding: gzip, deflate,
Connection: close,
Content-Length: 16,
Content-Type: application/json,
Host: httpbin.org,
User-Agent: python-requests/2.4.3 CPython/3.4.0,
X-Request-Id: xx-xx-xx},
json: {key: value},
origin: x.x.x.x,
url: http://httpbin.org/post}
It turns out I was missing the header information. The following works:
url = http://localhost:8080
data = {sender: Alice, receiver: Bob, message: We did it!}
headers = {Content-type: application/json, Accept: text/plain}
r = requests.post(url, data=json.dumps(data), headers=headers)
How to POST JSON data with Python Requests?
From requests 2.4.2 (https://pypi.python.org/pypi/requests), the json parameter is supported. No need to specify Content-Type. So the shorter version:
requests.post(http://httpbin.org/post, json={test: cheers})