You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派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服务是否限制了请求来源或需要额外的请求头字段

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:30:06