关于python:从请求瓶中获取json

Get json from request flask

本问题已经有最佳答案,请猛点这里访问。

客户代码:

1
2
3
4
5
6
7
8
import requests
import json

url = 'http://127.0.0.1:5050/login'
user ="newUser"
password ="password"
headers = {'content-type': 'application/json'}
response = requests.post(url, data={"user": user,"pass": password}, headers = headers)

服务器代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from flask import Flask, request, make_response

app = Flask(__name__)


@app.route('/login', methods=['GET','POST'])
def login():    
 if request.method == 'POST':

    username = request.form.get("user")
    password = request.form.get("pass")
    //more code
    return make_response("",200)

if __name__ =="__main__":
     app.run(host ="127.0.0.1", port = 5050)

问题是我的用户名和密码始终为零。

我还尝试使用:

1
2
content = request.get_json(force = True)
password = content['pass']

1
request.form['user']

当我打印内容时,我有:。因此我找不到从客户端发送的JSON。

编辑:

我添加了json.dumps并使用了request.get_json(),它运行正常。


您发送的是表单编码的数据,而不是JSON。仅仅设置内容类型并不能将您的请求转换为JSON。使用json=发送json数据。

1
response = requests.post(url, json={"user": user,"pass": password})

用以下方法检索烧瓶中的数据:

1
data = request.get_json()


我尝试执行与您发布的代码相同的代码,我能够获取usernamepassword的值,而不是None

enter image description here


我最初的猜测是,由于您没有在请求容器中设置Content-Type头,所以它不理解应该能够解析数据。尝试添加值为application/json的Content-Type头,看看它是否能满足您的需要。

另一个需要注意的是,当我点击登录页面时,浏览器会将内容类型标题设置为application/x-www-form-urlencoded并将数据编码为user=asdf&passwd=asdf