PB avec request

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
estelle_d
Messages : 4
Enregistré le : ven. 18 mars 2022 15:28

PB avec request

Message par estelle_d » sam. 19 mars 2022 09:51

Bonjour,

J'ai installé sur mon PI4 une BDD qui était auparavant sur un autre PI
Cela fonctionner avec cette config:
"
ServerPI = 'http://192.168.1.20'
rs = requests.post(ServerPI + "/Rajout_Q_air.php", data = data)

Aujourd'hui, le serveur est local
Donc j'ai remplacé ServerPI = 'http://192.168.1.29'
Cela me retourne l'erreur 500
J'ai essayé : ServerPI = 'localhost' sans succès
Qui a une idée ?

jelopo
Raspinaute
Messages : 310
Enregistré le : mer. 11 oct. 2017 10:23

Re: PB avec request

Message par jelopo » sam. 19 mars 2022 20:46

Bonjour,

Erreur 500: Internal serveur error.
Est-ce que le serveur est bien démarré sur le port 80 ?
Essayer cette commande pour voir:

Code : Tout sélectionner

 netstat -antp | grep LISTEN
A+

piper
Raspinaute
Messages : 654
Enregistré le : sam. 5 juin 2021 18:57

Re: PB avec request

Message par piper » sam. 19 mars 2022 23:08

Bonsoir :
HTTP 500 signifie : le serveur est bien démarré et tourne mais la requête l'a fait planter.
En général cela vient du fait que la requête est mal formulée.

En l'occurence ici, en fait, tu as une base de données mais surtout un accès via une API http (base de données et http = 2 choses totalement différentes : le serveur http t'offre ici une couche d'appel : il reçoit ta requête, la transforme en une requête compréhensible par la base de données, l'interroge, récupère la réponse, la transforme et te renvoie une réponse).
Ce type d'accès est bon lorsqu'on ne sait pas accéder directement à la base de données ou lorsqu'on souhaite la "cloisonner" pour des raisons de sécurité ou de confidentialité (non pas pour cacher les données mais pour cacher sa structure au développeur de l'application qui doit accéder aux données)

celui qui doit exécuter rs = requests.post(ServerPI + "/Rajout_Q_air.php", data = data) est celui qui demande les données
ServerPI est celui qui héberge l'API http : dessus doit tourner un service web (apache, lighthttp, nginx ou autre) et php doit y être installé.
Si c'est la "même" machine" alors ServerPI =localhost

Mais rien ne précise que serverPi héberge la base de données, on le saurait en ouvrait les fichiers php

Au passage, quand on fait request.post, il faut fournir une url, moi je mets http:// (ou https://) devant ex: http://localhost/toto.php

Attention aussi au mélange de minuscules majuscules dans les noms de scripts web, c'est sensible à la casse : si le fichier se nomme Rajout_Q_air.php et que tu tapes par erreur Rajout_q_air.php, tu auras une erreur 404 : normalement, pour le web, on met tout en minuscules.

Enfin, vérifies bien que data est conforme à ce qui est attendu par le serveur d'API (par Rajout_Q_air.php) , c'est le genre de chose qui provoque des http 500 (internal server error)
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Répondre

Retourner vers « Python »