🛠 Client HTTP : requête GET vers une API
Objectifs
Une fois connecté au Wi-Fi (tutoriel connexion), interroger une API HTTP : construire une requête GET manuelle, lire la réponse, vérifier le code d'état et extraire les données. Le CYW43439 est limité au 2,4 GHz et son débit est borné par le lien SPI ~33 MHz vers le RP2350 : gardez les reponses legeres.
Matériel
- Pico 2 W connectee au Wi-Fi (voir pico2w-connexion-wifi)
- MicroPython >= v1.25.0 (ou pico-sdk avec lwIP)
- Une API HTTP en clair pour le test (exemple : httpbin.org)
Code complet
# main.py - MicroPython : GET HTTP sur le port 80
import network, socket, time
wlan = network.WLAN
wlan.active(True)
if not wlan.isconnected:
wlan.connect('mon_ssid', 'mon_mot_de_passe')
while not wlan.isconnected:
time.sleep_ms(200)
hote = 'httpbin.org'
chemin = '/get'
s = socket.socket
s.connect(socket.getaddrinfo(hote, 80)[0][-1])
s.send(('GET %s HTTP/1.0\r\nHost: %s\r\nConnection: close\r\n\r\n'
% (chemin, hote)).encode)
entete = s.readline # b'HTTP/1.1 200 OK'
print('Statut :', entete.decode.split[1])
while s.readline.strip: # sauter les entetes
pass
print('Corps :', s.read(120).decode)
s.close
En C, le pico-examples officiel pico_w/wifi/http_client (picow_http_client.c) fait la même chose avec tcp_new/tcp_write.
Vérification attendue
La console affiche Statut : 200 puis les premiers octets du corps JSON. En coupant le Wi-Fi, la connexion échoue proprement avec une exception ou un code erreur au lieu de bloquer la carte.
Erreurs fréquentes
- Oublier l'en-tete Host: : de nombreux serveurs renvoient 400.
- Lire le corps sans vider les lignes d'entetes : le JSON parait corrompu.
- Utiliser https:// avec un simple socket : il faut TLS (voir pico2w-wifi-tls-certificats).
- En C, oublier le verrou cyw43_arch_lwip_begin/end autour des appels tcp_* hors callbacks.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython