为什么python requests.post接受json的数据但不接受字典

时间:2017-02-08 18:43:39

标签: python json python-requests

文档似乎表明我可以将'data ='作为字典传递,但除非我使用json.dumps()

否则我会收到错误
options = {
    "deviceId":["4d51de64-2235-a465-3aee-5ec495b5b250"],
    "serviceName":"software_manager",
    "serviceVersion":"1.0",
    "actionName":"Dump Log Files" }

res = requests.post( req, data=json.dumps(options), auth=cred) 

如果我尝试将选项作为字典传递,则会失败。

res = requests.post( req, data=options, auth=cred) 

data=json.dumps(options) # This works
data=options             # this fails

为什么呢?我在文档中遗漏了什么吗?

1 个答案:

答案 0 :(得分:1)

requests.post()data参数接受表单编码的数据(如果您传递dict)或原始字符串(这就是为什么json.dumps(options)有效的原因)。

要传入非编码字典,您应使用json的{​​{1}}参数。