Как исправить: «функции flask request.arg.get ('language') возвращают NONE - PullRequest
0 голосов
/ 02 октября 2019

Когда я пытаюсь отправить HTTPRequest из Esp8266 в приложение Flask, он возвращает Нет

Я отправляю

  http.POST("language=python");

на сервер колбы.

Как я могу получить значение на моем флеш-сервере?

Это мой код HTTP-запроса ESP8266:

 void loop() {
   // wait for WiFi connection
   if ((WiFiMulti.run() == WL_CONNECTED)) {
     WiFiClient client;

     HTTPClient http;

     Serial.print("[HTTP] begin...\n");
     if (http.begin(client, "http://192.168.1.107:8090/query")) {  // HTTP


     http.addHeader("Content-Type", "application/x-www-form-urlencoded");      
     int httpCode = http.POST("language=python");
     String payload = http.getString();
     Serial.println(httpCode);   //Print HTTP return code
     Serial.println(payload);         



     http.end();
   } else {
     Serial.printf("[HTTP} Unable to connect\n");
   }

Это мой код колбы:

 from flask import Flask,render_template
 from flask import request

 app = Flask(__name__)

 @app.route('/query',methods=['GET','POST'])
 def helloHandler():
     language = request.get_data() #if key doesn't exist, returns None
     veri=request.args.get('language')

     print(request.get_data()) 
     print(veri)

     return '''<h1>The language value is: {}</h1>'''.format(veri)

 app.run(host='0.0.0.0', port= 8090)

Иэто мои результаты, когда программы работают:

https://ibb.co/C5YZN59

1 Ответ

0 голосов
/ 02 октября 2019

Взгляните на базовый метод запроса werkzeug data. Он вызывает get_data, который, кажется, работает для вас:

@cached_property
def data(self):
    """
    Contains the incoming request data as string in case it came with
    a mimetype Werkzeug does not handle.
    """

    if self.disable_data_descriptor:
        raise AttributeError("data descriptor is disabled")
    # XXX: this should eventually be deprecated.
    # We trigger form data parsing first which means that the descriptor
    # will not cache the data that would otherwise be .form or .files
    # data.  This restores the behavior that was there in Werkzeug
    # before 0.9.  New code should use :meth:`get_data` explicitly as
    # this will make behavior explicit.
    return self.get_data(parse_form_data=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...