Problème requête http

Bonjour,

Je code sur arduino depuis environ un an et la je cherche à faire envoyer une requête http du type:

xx.xxx.xxx.xxx:xx/status.sht?Vidage_Ecume_state=2

Mais elle demande un loin et un mot de passe quand je la saisie dans un navigateur.
Si je fait cette requête :http://admin:password@xx.xxx.xxx.xxx:xx/status.sht?Vidage_Ecume_state=2

Ça fonctionne parfaitement avec mon navigateur internet mais je n'arrive pas à coder correctement l arduino pour l'envoyer c'est sûrement du au loin et au mot de pass

Pouvez vous m'aider

Merci

@++

Fred

Il te faut envoyer le login et le mot de passe dans l'entête http.

Voir ici, notamment le chapitre 14:
RFC2616
Et surtout là:
RFC2617

Attention, c'est du lourd, mais ça m'a été nécessaire lorsque j'ai voulu intégrer l'authentification dans mes requêtes http.

Salut,

merci pour les lien,

en effet c'est un peut indigeste
j'ai du mal a comprendre
aurai tu un exemple de code ?

merci encore pour ton aide

@++

fred

En fait ça dépend de ce que repond le serveur lorsque tu lui envoies la requête sans mot de passe.
Modifie ton programme pour afficher toute la réponse du serveur dans le serial monitor et montre-nous ça ici.
Ensuite on pourra composer la requête correctement.

Bonjour,

avec quelle commande serial print je dois mettre pour afficher la réponse du serveur?

merci pour votre aide

@++

fred

C'est toi qui développe la partie web ?

Salut,

La requête que je voudrais envoyer est destinée à un serveur domotique de gestion d'aquarium qui est un produit fini.
De mon côté j'ai déjà fait envoyer des requêtes http vers un autre serveur domotique sans identification et ça fonctionnait.
J'ai voulu adapter le code pour mon autre serveur sachant que mon code est la base d'une librairie ethernet d arduino .mais ça ne marche pas à cause du mot de passe et du login

@++

Fred

Dans ton message original, j'arrive pas à savoir si la requête http://admin:password@xx.xxx.xxx.xxx:xx/status.sht?Vidage_Ecume_state=2 fonctionne dans ton navigateur.

Tu peux utiliser les outils de dev de firefox pour étudier les échanges faits entre firefox et le serveur
et tenter de reproduire les mêmes requêtes sur l'arduino.

Oui la requête http://admin:password@xx.xxx.xxx.xxx:xx/status.sht?Vidage_Ecume_state=2 fonctionne très bien dans le navigateur internet

@++

Fred

désolé pour la réponse tradive, je n'avais pas vu qu'il y avait des nouvaux message ;(

donc la requête sous le format http://user:password@addresse/etc fonctionne dans un navigateur car il la décompose et la passe au serveur sous la forme attendue, avec notamment le login/mot de passe dans le bon format selon la méthode d'authentification attendue par le serveur.

C'est à dire (cas général) qu'il envoie d'abord la requête sans mot de passe, auquel cas le serveur répond qu'il veut un mot de passe. c'est dans cette réponse que le serveur indique la méthode d'authentification attendue. Le navigateur renvoie ensuite à nouveau la requête, cette fois avec le login/mot de passe dans le format attendu.

Donc utilise déjà l'exemple WebClient de l'IDE Arduino en remplaçant

char server[] = "www.google.com";    // name address for Google (using DNS)

par

char server[] = "xx.xx.xx.xx"; // adresse ip de ton serveur

et

    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");

par

    client.println("GET /status.sht?Vidage_Ecume_state=2 HTTP/1.1");
    client.println("Host: xx.xx.xx.xx");

et en adaptant bien sûr pour ton réseau local.

Ça affichera l'intégralité de la réponse du serveur, et là on verra le type d'authtification qu'il support.
On pourra modifier cet exemple pour composer correctement l'entête http avec le login/mot de passe qui va bien.

Autre méthode, suggérée par Tahitibob, c'est de tracer l'échange client/serveur en utilisant les outils de Firexfox par exemple.