我有一个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命令可以正常工作。
2条答案
按热度按时间i2loujxw1#
我真的不知道原因,但要使其工作,只需更改data=json.dumps(payload)到json=json.dumps(payload)。这对我来说很好。
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年前的问题是什么,但这可能会帮助一些人。