Bonjour à tous,

Je souhaite qu'un ESP8266 envoie une requête POST vers un serveur qui tourne sur Flask.

Cela fonctionne pour une requête GET mais pas pour une requête POST.
J'ai une erreur 400 m'indiquant que ma requête est mauvaise.

Mon code Arduino

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
 
ESP8266WiFiMulti WiFiMulti;
IPAddress ip(192, 168, 0, 99);
IPAddress gateway(192, 168, 0, 254);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns1(8, 8, 8, 8);
IPAddress dns2(4, 4, 2, 2);
 
void setup() {
 
  Serial.begin(9600);
  // Serial.setDebugOutput(true);
  delay(4000);
 
 
  WiFi.config(ip, gateway, subnet, dns1, dns2);
  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("*****", "********");
 
}
 
void loop() 
{
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {
 
    WiFiClient client;
    HTTPClient http;
 
 
    if (http.begin(client, "http://192.168.0.14:5000")) 
    {  
      http.addHeader("Content-Type", "text/html" );
 
      // start connection and send HTTP header
      http.POST("temp=10");
 
      String payload = http.getString();
      Serial.println(payload);
 
      } 
 
      http.end();
 
  }
 
  delay(10000);
}
Mon code Flask :

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import Flask, render_template, request
 
# Si le chemin demande est /Accueil
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def Accueil():
    print(request)
    if request.method == 'POST':
        valeurpython = request.values["temp"]
        a=0
        print(valeurpython)
        print(a)
        return ("ok")
    if request.method == 'GET':
        return ("ok")
 
if __name__ == '__main__':
    app.run(debug=True)

La forme d'une requête POST qui fonctionne sur Flask émise par un PC:
Nom : requete POST.png
Affichages : 659
Taille : 72,2 Ko

Merci pour votre aide.