如何在python中的POST请求中发送urlencoded参数

新手上路,请多包涵

我正在尝试将我的生产就绪代码部署到 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 参数发布到 API?

原文由 Abhinav Anand 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 947
2 个回答

您不需要对其进行显式编码,只需传递一个字典即可。

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

文档中:

通常,您希望发送一些表单编码的数据——很像 HTML 表单。为此,只需将字典传递给数据参数即可。发出请求时,您的数据字典将自动进行表单编码

原文由 Abhinav Srivastava 发布,翻译遵循 CC BY-SA 4.0 许可协议

Content-Type 标头设置为 application/x-www-form-urlencoded

 headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post(URL, data=params, headers=headers)

原文由 Rainbow Fossil 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题