【问题标题】:python POST request and null valuepython POST请求和空值
【发布时间】:2016-05-13 20:27:25
【问题描述】:

我正在使用以下代码,在应用程序级别执行 POST 请求

url = 'http://www.webdev.com/web/POST'
headers = {'content-type': 'application/json'}
payload = {'name': 'name', 'status': 'success', 'newname': 'name'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
r.text
r.status_code
r.connection.close()

来自 Python 日志

send: 'POST /web/POST HTTP/1.1\r\nHost: www.webdev.com\r\nContent-Length: 189\r\nUser-Agent: python-requests/2.8.1\r\nConnection: keep-alive\r\nAccept: */*\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
send: '{"name": "test1", "status": "sucsses", "newname": "name23"}'
reply: 'HTTP/1.1 200 OK\r\n'

但在应用程序级别,它为 3 个变量提供 null 值。

应用程序需要以下格式:

http://www.webdev.com/web/POST?name=test1&status=sucsses&newname=name23

我使用 curl 命令来发帖,应用程序得到了正确的值

【问题讨论】:

  • POST 正文包含有效负载更为常见。您确定期望的行为是使用查询字符串参数吗?

标签: python python-2.7 python-requests


【解决方案1】:

没有传递您的参数作为 url 的一部分并在 POST 正文中发送它们,但服务器正在等待 GET 参数。

要将 payload 作为 GET 参数传递,请使用 params 关键字参数:

r = requests.post(url, params=payload, headers=headers)

根据您的 url 格式,您应该忽略传递 data,只需传递 params

祝你好运!

【讨论】:

  • 我应该忽略 data=json.dumps(payload) 吗?
  • @Jecki 请让我知道我的回答是否适合您,或者最好更新它)谢谢
  • @Jecki 太好了,所以,我可以请您将其标记为已接受,以便保留在 SO 网站上并且以后不会被清理吗?
猜你喜欢
  • 1970-01-01
  • 2019-02-26
  • 2020-07-16
  • 2013-08-16
  • 1970-01-01
  • 2022-07-27
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多