与外部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库的请求,并另一篇文章似乎表明,你不应该以参数编码为请求对象: https://stackoverflow.com/a/14804320/1012040
“不管GET / POST是否你再也不用编码参数,它只是需要一个字典作为参数,并且是好去。”
似乎是序列化不应该是必要的?
我的请求对象:
response = requests.post(url, data=data, headers=headers)