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
Mon code Flask :
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); }
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:
Merci pour votre aide.
Partager