我正在使用以下代码,在应用程序级别执行 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 命令进行发布,应用程序获得了正确的值
最佳答案
您没有传递您的参数作为 url 的一部分并在 POST
正文中发送它们,但服务器正在等待 GET 参数。
要将您的payload
作为 GET 参数传递,请使用 params关键字参数:
r = requests.post(url, params=payload, headers=headers)
根据您的 url 格式,您应该忽略传递 data
,只需传递 params
。
祝你好运!
关于python POST请求和空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197419/