1 pièce(s) jointe(s)
[ESP8266] Requête POST vers Flask
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:
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:
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:
Pièce jointe 548339
Merci pour votre aide.