Codigo del cliente:
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)
Código del servidor:
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)
El problema es que mi nombre de usuario y contraseña siempre son Ninguno.
También probé usando:
content = request.get_json(force = True) password = content['pass']
y
request.form['user']
Cuando imprimo el contenido, tengo: < Request ' http://127.0.0.1:5050/login ' [POST]> . Así que no puedo encontrar el json enviado desde el cliente.
EDITAR:
Agregué json.dumps y usé request.get_json() y funcionó
Está enviando datos codificados de formulario, no JSON. Simplemente configurar el tipo de contenido no convierte su solicitud en JSON. Use json=
para enviar datos JSON.
response = requests.post(url, json={"user": user,"pass": password})
Recupere los datos en Flask con: response = requests.post(url, json={"user": user,"pass": password})
data = request.get_json()
Intenté ejecutar el mismo código que publicaste y pude obtener valores para el nombre de username
y password
en lugar de None
.
Mi suposición inicial es que, dado que no está configurando el encabezado de tipo de contenido en su solicitud, Flask no entiende que debería poder analizar los datos. Intente agregar el encabezado Content-Type con el valor application/json
y vea si eso lo lleva a donde desea.
Otra cosa a tener en cuenta es que cuando llego a mi página de inicio de sesión, el navegador establece el encabezado de tipo de contenido en application/x-www-form-urlencoded
y codifica los datos como user=asdf&passwd=asdf