我使用以下代码在应用程序级别执行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命令做了帖子,应用程序得到了正确的值
答案 0 :(得分:3)
你没有传递你的参数作为网址的一部分并在POST
正文中发送,但服务器正在等待GET参数。
要将payload
作为GET参数传递,请使用params关键字参数:
r = requests.post(url, params=payload, headers=headers)
根据您的网址格式,您应该忽略传递data
,只需传递params
。
祝你好运!