Envoi d'une requête HTTP d'un Arduino vers un site web

Bonjour,

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".
Firewall disclaimer

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 :

La fonction JavaScript du bouton "valider" est la suivante :slight_smile:

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".

Auriez vous des idées à me soumettre ?

Merci

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

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 :
Sans titre
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 ?

Merci,

Si j'essaie d'accéder à http://10.105.158.254:1000/ je tombe effectivement en timeout.
La variable client est elle correctement déclarée / connectée ?

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 ?

Merci pour vos réponses

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 ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.