Je voudrais me connecter au réseau wifi "guest" de mon entreprise avec mon arduino UNO WIFI. J'arrive à me connecter sans problème au wifi mais le problème est le suivant :
Il y a une page ou il faut valider "les conditions et clauses de non-responsabilités" avec un bouton "oui, j'accepte".
J'ai réussi à extraire le code HTML de la page afin de trouver l'instruction à envoyer depuis mon Arduino pour simuler la validation du bouton :
Si j'ai bien compris le fonctionnement du code de base la variavle "answer" est à 0, puis en cliquant sur le bouton "oui, j'accepte", ça rentre dans la fonction JS pour mettre la variable "answer" à 1 ?
Depuis mon Arduino j'arrive à récupérer les infos de la page HTML, cependant je n'arrive pas à envoyer une requête par exemple " client.println("answer = 1"); pour mettre cette variable "answer" à 1, afin de simuler le clique du bouton "valider".
Salut.
Il faut instancier un client HTTP, envoyer une requête GET pour récupérer la page "conditions et clauses de non-responsabilités" puis envoyer une requête POST.
Je dis POST car dans le JavaScript la requête est envoyée par submit().
Je saurais faire cela avec un ESP8266 ou ESP32 avec la librairie HTTPClient, mais pas avec une UNO WIFI.
Avec un ESP cela ressemblerait à ceci :
#include <HTTPClient.h>
HTTPClient http;
http.begin(client, serverName); // connexion au serveur serverName
http.addHeader("Content-Type", "text/plain");
int httpResponseCode = http.POST("answer=1");
http.end();
hbachetti merci pour ton retour.
J'ai réussi à intégrer la librairie HTTPClient.h dans mon code.
La fonction GET fonctionne très bien, j'ai une réponse positive, cependant la fonction POST me renvoie un code d'erreur -3 ce qui correspond à un timeout.
Sur le code de la page HTML c'est bien une "method : POST" qui est attendu par la page web :
Quand je clique sur le bouton "Oui, j'accepte", j'ai bien la variable "answer" qui passe à 1.
Voici le bout de code Arduino de la fonction POST :
Serial.println("making POST request");
String contentType = "text/plain";
String postData = "answer=1";
client.post("/", contentType, postData); //client.post("/", contentType, postData);
// read the status code and body of the response
statusCode = client.responseStatusCode();
response = client.responseBody();
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
Serial.println("Wait one seconds");
delay(1000);
Ou bien c'est ma variable dans le POST qui est mal écrite ?
Effectivement l'IP 10.105.158.254:1000 est une page web interne à l'entreprise.
La variable Client est bien déclaré puisque j'arrive via la fonction GET et la variable client à afficher toutes les infos et le code html de la page web de l'IP: 10.105.254:1000. Je ne sais pas comment envoyer mes données vers la page web a part avec la fonction POST afin de de simuler le clique du bouton "oui j'accepte" et ainsi activer le script JS de la page web. Avez des idées ?
as tu fais le processus dans un navigateur avec le débuggeur activé(F12), pour voir ce qui est envoyé au serveur WEB lorsque tu cliques sur ton bouton?
Edit: As tu bien envoyé les "input" cachés du formulaire ?