树莓派Pico W调用urequests触发ValueError问题求助
解决树莓派Pico W通过urequests获取Solar Man LSW-3 status.html的报错问题
问题分析
报错ValueError: invalid syntax for integer with base 10是因为MicroPython的urequests库对URL中直接嵌入HTTP Basic Auth(username:password@格式)的解析逻辑存在缺陷,误将部分内容当作端口号解析,导致整数转换失败。而浏览器对这种URL格式的解析更完善,所以能正常访问。
解决方法
手动构造HTTP Basic Auth的Authorization请求头,替代URL中的认证信息,具体步骤如下:
- 导入
base64模块(MicroPython自带该模块) - 将用户名和密码拼接为
username:password字符串,进行base64编码 - 构造包含
Authorization字段的请求头字典 - 在
urequests.get()中传入该请求头
修改后的代码
import network import urequests import base64 SSID = "abcdefg" PASSWORD = "123456" AUTH_USER = "username" AUTH_PASS = "password" # 连接WiFi wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASSWORD) print(wlan.isconnected()) # 构造Basic Auth头 auth_str = f"{AUTH_USER}:{AUTH_PASS}" auth_bytes = auth_str.encode('utf-8') auth_base64 = base64.b64encode(auth_bytes).decode('utf-8') headers = {"Authorization": f"Basic {auth_base64}"} # 发送GET请求 response = urequests.get("http://10.10.100.254/status.html", headers=headers) print(response.status_code) print(response.text)
额外说明
- 务必替换代码中的
AUTH_USER和AUTH_PASS为你的Solar Man LSW-3的实际用户名和密码 - 如果仍然报错,可以排查:
- Pico W与LSW-3的网络连通性(比如用
wlan.ifconfig()查看本机IP,尝试ping目标设备IP) - LSW-3的HTTP服务是否限制了请求来源或需要额外的请求头字段
- Pico W与LSW-3的网络连通性(比如用
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

