如何在Python中为发布请求传递JSON数据?
问题描述:
我试图用Python的Requests模块执行一个cURL命令,但服务器不断返回响应代码406,并显示'无效的JSON数据'。下面是cURL命令以及Python代码。如何在Python中为发布请求传递JSON数据?
卷曲
curl --data "userDetails={'userEmail':'[email protected]','org_id': '3$$4bjnNP','fName': 'Jon','lName': 'Snow','jobTitle': 'Night's Watch', 'language': 'Andal(Westeros)','userAccessView': 'Both','start_date': '30-Jan-2017','end_date': '29-Jan-2018','never_exp': false}" --cacert "C:\Users\cthakor\Desktop\User Creation\security.cer" --cookie "ASessionID='GQa3GTlLGZ8mGNH67CQvTvAz='" https://www.example.com/api/portal/createUser
的Python
session_id_cookie = {'ASessionID': 'GQa3GTlLGZ8mGNH67CQvTvAz='}
new_user_data = {"userDetails":{
"userEmail" : "[email protected]",
"org_id" : "3$$4bjnNP",
"fName" : "Jon",
"lName" : "Snow",
"jobTitle": "Night's Watch",
"language" : "Andal(Westeros)",
"userAccessView" : "Both",
"start_date" : "30-Jan-2017",
"end_date" : "29-Jan-2018",
"never_exp" : False,
}
}
r = requests.post("https://www.example.com/api/portal/createUser",
data=new_user_data, cookies=session_id_cookie)
答
在请求,通过字典来的数据参数,数据字典将自动形式编码的请求时。
如果您需要JSON编码数据,使用
r = requests.post(url, data=json.dumps(new_user_data))
或
r = requests.post(url, json=new_user_data)
答
执行以下操作:
import json final_data = json.dumps(new_user_data)
传递final_data。
使用'data = new_user_data ['userDetails']' –
使用'json = new_user_data',而不是'data = new_user_data' – Clearer
akashkarothiya&Clearer那没用。 – Chandral