WiPy HTTPS call
-
I'm trying to do an HTTPS call, using WiPy, but getting an OSError: -32512 when calling ssl.wrap_socket(s).
Here's my code
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) s.write(b"GET / HTTP/1.0\r\n\r\n") print(s.read(4096)) s.close()Do you have any idea, what I'm doing wrong?
-
I also get the error message when trying code from Pycom documentation.
-
Hi @Tineler,
I've just been testing your code - I'm not sure what's throwing the error exactly but I believe that it's coming from trying to wrap an existed and connected socket with ssl. I think this behaviour is unexpected, so I'll report it internally.
I re-wrote your example but wrapped the socket with ssl before connecting them and it seemed to work without issue. Maybe try to use the example below:
import socket import ssl s = socket.socket() ai = socket.getaddrinfo("google.com", 443) addr = ai[0][-1] ss = ssl.wrap_socket(s) ss.connect(addr) ss.write(b"GET / HTTP/1.0\r\n\r\n") print(ss.read(4096)) ss.close()Let me know if that works for you!
-
Hi @bucknall
This code works for me in general. But doing further investigation, I found out, that I still get the error while running the code within a call back for the Blutooth write event:
char1_cb = chr1.callback(trigger=Bluetooth.CHAR_WRITE_EVENT, handler=char1_cb) -
@bucknall Hi.
Hi, I've tried your example, but I still have a "Guru meditation error".
It seems to be from the use of the ssl library: I tried to connect to google without ssl and I did not have any problems.
The error appeared when I tried to connect via ssl, as in your example.
I attach the sources and the results of the two versions.Connect to google without ssl, port 80
---------------------[start src]
import network
import machine
import time
import socket
import sslWifiNetworkName = "here wifi ssid"
WifiPassword = "here wifi password"
wlan = network.WLAN(mode=network.WLAN.STA)
wlan.connect(WifiNetworkName, auth=(network.WLAN.WPA2, WifiPassword), timeout=5000)
while not wlan.isconnected():
machine.idle()
print("Connected to Wifi\n")
print(wlan.ifconfig())
s = socket.socket()
ai = socket.getaddrinfo("google.com", 80)
addr = ai[0][-1]
s.connect(addr)
s.write(b"GET / HTTP/1.0\r\n\r\n")
print("----------------[start]")
print(s.read(4096))
print("----------------[end]")
s.close()
---------------------[end src]Results:
import thttpok.py
I (22198) wifi: Init ampdu: 0
I (22198) wifi: mode : sta (24:0a:c4:00:d6:94)
I (22199) wifi: sleep disable
I (23079) wifi: n:6 0, o:6 0, ap:255 255, sta:6 0, prof:6
I (24068) wifi: state: init -> auth (b0)
I (24070) wifi: state: auth -> assoc (0)
I (24073) wifi: state: assoc -> run (10)
I (24088) wifi: connected with Vodafone-33852835, channel 6
Connected to Wifi('192.168.1.5', '255.255.255.0', '192.168.1.1', '192.168.1.1')
----------------[start]
b'HTTP/1.0 302 Found\r\nCache-Control: private\r\nContent-Type: text/html; charset=UTF-8\r\nReferrer-Policy: no-referrer\r\nLocation: http://www.google.it/?gfe_rd=cr&ei=2RkCWeKtBOTBXrS3t4gD\r\nContent-Length: 256\r\nDate: Thu, 27 Apr 2017 16:18:33 GMT\r\n\r\n<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">\n<TITLE>302 Moved</TITLE></HEAD><BODY>\n<H1>302 Moved</H1>\nThe document has moved\n<A HREF="http://www.google.it/?gfe_rd=cr&ei=2RkCWeKtBOTBXrS3t4gD">here</A>.\r\n</BODY></HTML>\r\n'
----------------[end]This is another version of the same software, using the ssl connection, like in your example, I have “Guru Meditation Error: Core 0 panic'ed (abort)”:
Connect to google with ssl, port 443
---------------------[start src]
import network
import machine
import time
import socket
import sslWifiNetworkName = "here wifi ssid"
WifiPassword = "here wifi password"
wlan = network.WLAN(mode=network.WLAN.STA)
wlan.connect(WifiNetworkName, auth=(network.WLAN.WPA2, WifiPassword), timeout=5000)
while not wlan.isconnected():
machine.idle()
print("Connected to Wifi\n")
print(wlan.ifconfig())
s = socket.socket()
ai = socket.getaddrinfo("google.com", 443)
addr = ai[0][-1]
ss = ssl.wrap_socket(s)
ss.connect(addr)
ss.write(b"GET / HTTP/1.0\r\n\r\n")
print("----------------[start]")
print(ss.read(4096))
print("----------------[end]")
ss.close()
---------------------[end src]Results:
import thttps2.py
I (34325) wifi: Init ampdu: 0
I (34325) wifi: mode : sta (24:0a:c4:00:d6:94)
I (34326) wifi: sleep disable
I (34455) wifi: n:1 0, o:6 0, ap:255 255, sta:1 0, prof:6
I (35443) wifi: state: init -> auth (b0)
I (35446) wifi: state: auth -> assoc (0)
I (35449) wifi: state: assoc -> run (10)
I (35464) wifi: connected with Vodafone-33852835, channel 1
Connected to Wifi('192.168.1.5', '255.255.255.0', '192.168.1.1', '192.168.1.1')
I (45450) wifi: pm start, type:0abort() was called at PC 0x4014c133
Guru Meditation Error: Core 0 panic'ed (abort)Backtrace: 0x40085692:0x3ffc4f60 0x40086470:0x3ffc4f80 0x4015023c:0x3ffc4fb0 0x4015057f:0x3ffc4fe0 0x40150706:0x3ffc5060 0x4014bba2:0x3ffc5080
……..
/////wAAAAAAAAAAAAAAAFwz+z8AAAAAAQAAAAAAAAAAAAAAQDj7PwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAPYMCICAPP4/+Dn8PyxK+z8AAAAAAAAAAEw4+z8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
================= CORE DUMP END =================
Rebooting...
ets Jun 8 2016 00:22:57rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:QIO, clock div:2
load:0x3fff9010,len:8
load:0x3fff9018,len:248
load:0x40078000,len:4056
load:0x4009fc00,len:920
entry 0x4009fde4
I (1548) wifi: wifi firmware version: 90b1b8b
I (1549) wifi: config NVS flash: disabled
I (1549) wifi: config nano formating: disabled
I (1564) wifi: Init dynamic tx buffer num: 32
I (1565) wifi: wifi driver task: 3ffd63f4, prio:23, stack:3584
I (1565) wifi: Init static rx buffer num: 10
I (1567) wifi: Init dynamic rx buffer num: 0
I (1571) wifi: Init rx ampdu len mblock:7
I (1575) wifi: Init lldesc rx ampdu entry mblock:4
I (1579) wifi: wifi power manager task: 0x3ffdb7b0 prio: 21 stack: 2560
I (1586) wifi: sleep disable
I (2575) wifi: wifi timer task: 3ffdc844, prio:22, stack:3584
I (2591) wifi: Init ampdu: 0
I (2591) wifi: mode : softAP (24:0a:c4:00:d6:95)
MicroPython v1.8.6-593-g8e4ed0fa on 2017-04-12; LoPy with ESP32
Type "help()" for more information. -
I am having similar experience with Guru meditation errors when doing HTTPS requests: https://forum.pycom.io/topic/1061/https-post-using-urequests-py-and-guru-mediation-error
Daniel promised to find a solution for this issue.
-
I have the same problem: https://forum.pycom.io/topic/1056/ssl-socket-communication-between-wipy-2-0
But if I try to connect with the wipy to a secure Server with ssl
#client side import usocket as socket import ssl from network import WLAN import machine wlan = WLAN(mode=WLAN.STA) wlan.connect('TP-LINK_2.4GHz_E113DF', auth=(WLAN.WPA2,"***********")) while not wlan.isconnected(): machine.idle() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) # Require a certificate from the server. We used a self-signed certificate # so here ca_certs must be the server certificate itself. ssl_sock = ssl.wrap_socket(s,cert_reqs=ssl.CERT_REQUIRED,ca_certs='cert.pem') ssl_sock.connect(('192.168.1.125', 10023)) ssl_sock.write(b"boo!") data = ssl_sock.read() print(data) ssl_sock.close()It works without problems. Try to use:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)instead of
s = socket.socket()But if I try to set a WiPy as a Server, I receive a Guru Meditation Error. More datails are in the topic linked early.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login