python POST请求和空值

时间:2016-02-04 09:40:09

标签: python python-2.7 python-requests

我使用以下代码在应用程序级别执行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个变量提供了空值。

该应用程序需要以下格式:

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

我用curl命令做了帖子,应用程序得到了正确的值

1 个答案:

答案 0 :(得分:3)

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

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

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

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

祝你好运!