curl 使用requests库提交具有整数值的参数

3hvapo4f  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(131)

我有一个curl命令,我必须使用请求进行转换。

curl --request POST "https://www.example.com" --data "user_id=200" --data "user_data=je93jfe92dj220,39fjid20djd93f302,93jfieheio02hfne,902jfoienfieshiu202" --header "Authorization: Bearer [TOKEN]"

使用请求,调用应该是

hdr = {'Content-Type': 'Content-type: application/json',
       'Authorization': 'Bearer TOKEN'  }
payload = {"user_id":200,"records":"je93jfe92dj220,39fjid20djd93f302,93jfieheio02hfne,902jfoienfieshiu202"
requests.post('https://www.example.com', headers=hdr, data=json.dumps(payload))

这不起作用,因为我得到一个错误返回,'user_id'参数必须是一个整数。不知道如何确保这一点,因为在发送时不是所有参数都被格式化为字符串吗?但是curl命令可以正常工作。

i2loujxw

i2loujxw1#

我真的不知道原因,但要使其工作,只需更改data=json.dumps(payload)到json=json.dumps(payload)。这对我来说很好。

rjee0c15

rjee0c152#

文档的这一部分详细说明了data参数和json参数之间的区别https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests
简而言之:

  • data可以是具有字符串"key":"value"对的字典,也可以是字符串
  • json自动从json字符串中创建上述字典
  • json还自动添加Content-Type : application/json标头

我不知道7年前的问题是什么,但这可能会帮助一些人。

相关问题