我的 Pico Pi W 已连接到 wifi - 已确认,因为我可以远程访问它,我在路由器中看到它,等等......
将此用作资源并直接复制/粘贴:https://github.com/micropython/micropython/blob/v1.22-release/examples/network/http_client_ssl.py
import socket
import ssl
# I connect to WiFi here
def main(use_stream=True):
s = socket.socket()
ai = socket.getaddrinfo("google.com", 443)
print("Address infos:", ai)
addr = ai[0][-1]
print("Connect address:", addr)
s.connect(addr)
s = ssl.wrap_socket(s)
print(s)
if use_stream:
# Both CPython and MicroPython SSLSocket objects support read() and
# write() methods.
s.write(b"GET / HTTP/1.0\r\n\r\n")
print(s.read(4096))
else:
# MicroPython SSLSocket objects implement only stream interface, not
# socket interface
s.send(b"GET / HTTP/1.0\r\n\r\n")
print(s.recv(4096))
s.close()
main()
Address infos: [(2, 1, 0, '', ('142.250.179.238', 443))]
Connect address: ('142.250.179.238', 443)
Traceback (most recent call last):
File "main.py", line 64, in <module>
File "main.py", line 47, in main
OSError: (-29312, 'MBEDTLS_ERR_SSL_CONN_EOF')
# Line 47 = s = ssl.wrap_socket(s)
# Line 64 = main()
感觉应该是这么简单的事情
我也尝试过使用
urequests
,如r = urequests.get("https://google.com")
,它返回相同的异常,在第一个示例中带或不带流(写/读与发送/接收),并使用不同的服务器/端点。
连接到 WiFi 时,导入有一个
gc.threshold(500)
,这似乎是问题所在。增加到 gc.threshold(5000)
(并使用 gc.disable()
进行测试以获得良好的测量结果)并且请求成功。