2017-07-07 288 views
0

我试图将我的生产就绪代码部署到Heroku中进行测试。不幸的是,它没有获取JSON数据,所以我们转换成了x-www-form-urlencoded。如何在python中的POST请求中发送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参数发布到API?

+2

只需在一个字典来'data'传递,默认情况下请求将其发送的X WWW的形式,进行了urlencoded的照顾。 –

回答

1

你不需要明确地编码它,只需传递一个字典。

>>> r = requests.post(URL, data = {'key':'value'}) 

documentation:

通常情况下,你要发送某种形式的编码数据 - 很像一个HTML 形式。要做到这一点,只需将字典传递给数据参数即可。你 字典数据将自动表单编码时请求 由