我在使用外部 API 时遇到了这个问题。我将我的身体数据作为字典直接发送到请求中,并收到 400 个错误:
data = {
"someParamRange": {
"to": 1000,
"from": 100
},
"anotherParamRange": {
"to": True,
"from": False
}
}
当我添加一个 json.dumps 包装时,它可以工作:
data = json.dumps({
"someParamRange": {
"to": 1000,
"from": 100
},
"anotherParamRange": {
"to": True,
"from": False
}
})
我不完全理解为什么这是必要的,因为字典和 JSON 对象在语法上是相同的。有人可以帮助我了解这里的幕后情况吗?
为了完整起见,这是我的标题:
headers = {'API-KEY': 'blerg', 'Accept-Encoding': 'UTF-8', 'Content-Type': 'application/json', 'Accept': '*/*', 'username': 'user', 'password': 'pwd'}
编辑:
我之前没有提到这一点,但现在我觉得它可能是相关的。我正在使用 Python Requests 库,另一篇文章似乎建议您永远不必将参数编码为请求对象:https ://stackoverflow.com/a/14804320/1012040
“无论是 GET/POST,您都不必再次对参数进行编码,它只需要一个字典作为参数就可以了。”
似乎不需要序列化?
我的请求对象:
response = requests.post(url, data=data, headers=headers)