我试着把我的生产代码部署到Heroku上测试,不幸的是,它没有接受JSON数据,所以我们转换成了x-www-form-urlencoded。
params = urllib.parse.quote_plus(json.dumps({
'grant_type': 'X',
'username': 'Y',
'password': 'Z'
}))
r = requests.post(URL, data=params)
print(params)
它在这一行显示了一个错误,因为我猜data=params
的格式不正确。
有没有办法将urlencoded参数POST到API?
3条答案
按热度按时间t3irkdon1#
您不需要显式地对它进行编码,只需将您的dict传递给
data
参数,它就会被自动编码。从官方文件来看:
通常,您希望发送一些表单编码的数据-非常类似于HTML表单。为此,只需向data参数传递一个字典。当发出请求时,数据字典将自动进行表单编码
3qpi33ja2#
将
Content-Type
标头设置为application/x-www-form-urlencoded
。oaxa6hgo3#
需要注意的一件重要事情是,对于嵌套的JSON数据,您需要将嵌套的JSON对象转换为字符串。
字典需要转换为这种格式