Pico W でネットワークリクエストを送信したいときは「urequests」ライブラリを使用します。
import utime
import network
import urequests
#Wi-FiのSSIDとパスワードを設定
ssid = ''
password = ''
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
# 接続が確認できない場合は1秒おきに再確認する(最大10回)
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('waiting for connection...')
utime.sleep(1)
# 接続できない場合はエラーを返す
if wlan.status() != 3:
raise RuntimeError('network connection failed')
else:
print('Connected')
status = wlan.ifconfig()
print('ip = ' + status[0])
# ここで通信処理
url = "https://www.yahoo.co.jp/"
r = urequests.get(url)
print('status_code = %d' % r.status_code)
print('text = ' + r.text[:100])
# 切断
wlan.disconnect()
print('Disconnect')
実行結果は以下の通りです。
waiting for connection...
waiting for connection...
waiting for connection...
waiting for connection...
Connected
ip = 192.168.11.10
status_code = 200
text = <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" conte
Disconnect
「urequests.get(url)」でリクエストを送信して、「text」でテキストデータが取得できます。
また「status_code」でリクエストが成功しているかどうか確認できます。
※200番台が成功、400番台と500番台が失敗(エラー)です。
おまけ
サンプルではテキストデータを最初の100文字だけ出力していますが、もちろん全部出力できます。
# テキストデータすべて
print('text = ' + r.text)
# テキストデータ最初の100文字
print('text = ' + r.text[:100])
「text」でテキストデータが取得でき、「content」でバイナリデータが取得できます。
また、「encoding」でバイナリデータのエンコーディングが取得できます。
# バイナリデータ最初の100文字
print('content = ' + str(r.content[:100]))
# バイナリデータのエンコーディング
print('encoding = ' + r.encoding)
パラメーターを渡す時はURLの後ろに「?」を付けて記述します。
url = 'https://*****?a=1'
パラメーターが複数ある場合は「&」で繋ぎます。
url = 'https://*****?a=1&b=2'
パラメーター値が変数に入っている時は書式化演算子の「%」を使うと簡単に書けます。
a = 1
b = 2
url = 'https://*****?a=%s&b=%s' % (a, b)
urequests — Network Request Module