Récupérer valeur formulaire ESP8266

Bonjour J'essaie de récupérer les valeurs renvoyées par un formulaire (post) mais je n'obtiens que des 0 via (server.arg]

void handlePlain() { if (server.method() != HTTP_POST) { Serial.println("handlePlain-88"); server.send(405, "text/plain", "Method Not Allowed"); } else { Serial.println("handlePlain-91"); server.send(200, "text/plain", "POST body was:\n" + server.arg("plain"));

Serial.print("->");Serial.println(server.arg("fr").toInt()); Serial.print("->");Serial.println(server.arg("rp").toFloat()); } }

alors que le retour via server.send[/b] me donne bien les valeurs > POST body was: > fr=36 > rp=7.6 J'ai du rater quelque chose ? Merci

Sans code difficile de vous aider…

Je ne voulais pas surcharger le post
donc le code qui n’est autre que celui d’exemple à part la page html qui est de mon cru:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <stdio.h>

#ifndef STASSID
#define STASSID “AndroidAP”
#define STAPSK “Miremont31”
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

ESP8266WebServer server(80); // on instance un serveur web nommé serveur accessible sur le port 80
MDNSResponder mdns; // on instance la fonction mdns

const int led = LED_BUILTIN;

const String postForms = "\

\ ESP8266 Web Server POST handling\ \ body { background-color: lightblue; font-family: Comic Sans MS, Arial; Color: #000088;text-align: center }\ .slider-wrapper {display: inline-block;width: 100%;height: 50px;padding: 0;}\ .slider-wrapper input {width: 100%;height: 20px;margin: 0;transform-origin: 75px 75px;}\ td {text-align: left;vertical-align:center}\ .divbtn { position:absolute; bottom: 50px; right: 50px;}\ .btn {width:85px;height:85px;background:#cc0000;font: 18px Comic Sans MS;border-radius:50%;border:5px;color:#fff;cursor:pointer}\ .btn:hover{background:#ffffff;color: #cc04c2;}\ \ \ \

Variateur de fréquence sinusoïdal monophasé

\

Modulation à largeur d'impulsion  

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

Fréquence:

\
  \ \
\
\ 0Hz\
\

Temps de démarrage:

\
\
  \ \
\
\ 0s\
\
\ \ \ \ ";

void handleRoot() {
Serial.println(“handleRoot-81”);
server.send(200, “text/html”, postForms);
Serial.println(“handleRoot-83”);
}

void handlePlain() {
if (server.method() != HTTP_POST) {
Serial.println(“handlePlain-88”);
server.send(405, “text/plain”, “Method Not Allowed”);
} else {
Serial.println(“handlePlain-91”);
server.send(200, “text/plain”, “POST body was:\n” + server.arg(“plain”));

Serial.print("->");Serial.println(server.arg(“fr”).toInt());
Serial.print("->");Serial.println(server.arg(“rp”).toFloat());
}
}

/*void handleForm() {
if (server.method() != HTTP_POST) {
Serial.println(“handleForm-98”);
server.send(405, “text/plain”, “Method Not Allowed”);

} else {
Serial.println(“handleForm-102”);
String message = “POST form was:\n”;
for (uint8_t i = 0; i < server.args(); i++) { //boucle sur les arguments retournés
message += " " + server.argName(i) + ": " + server.arg(i) + “\n”; //nom argument - valeur
}
server.send(200, “text/plain”, message);
Serial.println(“handleForm-108”);
}
}*/

/void handleNotFound() {
Serial.println(“handleNotFound-113”);
String message = “File Not Found\n\n”;
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? “GET” : “POST”;
message += "\nArguments: ";
message += server.args();
message += “\n”;
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + “\n”;
}
server.send(404, “text/plain”, message);
Serial.println(“handleNotFound-126”);
}
/

void setup(void) {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println(“setup”);

// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin(“nodemcu”, WiFi.localIP())) {
Serial.println(“mdns: http://nodemcu.local”);
Serial.print(‘Host=’);Serial.println( WiFi.hostname().c_str());
Serial.print(‘SSID=’);Serial.println( WiFi.SSID().c_str());
}
if (mdns.begin(“esp8266”)) {
Serial.println(“MDNS responder esp8266 started”);
}

server.on("/", handleRoot);

server.on("/postplain/", handlePlain);

//server.on("/postform/", handleForm);

//server.onNotFound(handleNotFound);

server.begin();
Serial.println(“HTTP server started”);
}

void loop(void) {
server.handleClient();
}

Utilisez des balises de code SVP (corrigez le post précédent)

Pouvez vous tester avant de convertir s’il voit les bonnes clés avec server.hasArg("fr")

server.hasArg("fr")

ne retourne rien ou false

if ( server.hasArg("fr") ) {Serial.print("->");Serial.println("vu");}

Quelle est la commande html qui est censée avoir un argument associé au mot 'plain'?

Comment fais-tu fonctionner ton serveur ? Je veux dire, donne nous un exemple de commande

Pour l'instant j'essaie d'interfacer les différentes fonctions. Donc je lance le serveur que j'interroge via un smartphone duquel je règle la fréquence et la rampe d'accélération, donc ce sont ces 2 valeurs que j'essaie de récupérer après submit du formulaire. Le serveur les voit mais je n'arrive pas à les récupérer.

POST body was: fr=36 rp=7.6

J'ai beau scruter l'html, je ne vois pas d'erreur mais...

J’ai trouvé l’erreur:
elle est dans les attributs du , le enctype=“text/plain” est en trop