我试图使用python和django向box api发出请求。我收到400 Entity body should be a correctly nested resource attribute name\\/value pair
错误。
我的要求如下:
requests.options(headers.kwargs['url'], headers=headers.headers,
data={'parent': {'id': 'xxxx'}, 'name': 'name.pdf'})
当我检查400
请求时,它包含'parent=id&name=name.pdf'
,这让我相信我没有正确设置身体
卷曲与身体一起使用
-d '{"name": "name.pdf", "parent": {"id": "xxxxx"}}'
答案 0 :(得分:1)
显式编码字典以防止表单编码。否则,它将以与{3.}}(或Python 3.x中的urllib.urlencode
)类似的方式进行表单编码。
import json
...
requests.options(
headers.kwargs['url'], headers=headers.headers,
data=json.dumps({'parent': {'id': 'xxxx'}, 'name': 'name.pdf'}))
换句话说,不是传递字典,而是传递一个字符串。
... 有很多次你想要发送不是的数据 形式编码。如果传入字符串而不是dict,则传入该数据 将直接发布。