My friend and colleague programmed this..
https://github.com/46elks/46elks-getting-started/blob/master/code-examples/MicroPython/https_post_with_micropython.py
If you would like to use 46elks Telco API mentioned in the code, register here and contact us at help@46elks.com for help.
# Rudimentary HTTPS POST request using MicroPython without any
dependencies.
# Supports Basic Auth and encodes data as x-www-form-urlencoded.
#
# Written by Johannes Ridderstedt <johannesl@46elks.com>
# This code is public domain. Use freely.
from ubinascii import b2a_base64
import usocket
import ussl
# API credidentials
username = 'u2c11ef65b429a8e16ccb1f960d02c734'
password = 'C0ACCEEC0FAFE879189DD5D57F6EC348'
def quote( value ):
l = []
for ch in value.encode( 'utf-8' ):
if ch == b' ':
l.append( b'+' )
elif ch > 32 and ch < 128 and ch not in b'?=':
l.append( b'%c' % ch )
else:
l.append( b'%%%02X' % ch )
return b''.join( l )
def api_post( path, data ):
info = usocket.getaddrinfo( 'api.46elks.com', 443 )
ip = info[0][-1]
args = []
for key in data:
args.append( quote( key ) + '=' + quote( data[key] ) )
content = b'&'.join( args )
lines = [
b'POST /a1/%s HTTP/1.0' % path,
b'Authorization: Basic %s' % b2a_base64( username + ':' + password )[:-1],
b'Content-type: application/x-www-form-urlencoded',
b'Content-Length: %d' % len( content ),
b'',
content
]
conn = usocket.socket()
conn.connect( ip )
conn = ussl.wrap_socket( conn )
conn.write( b'\r\n'.join( lines ) )
print( conn.read(4096).decode('utf-8') )
conn.close()
sms = {
'to': '+46704508449',
'from': 'MicroPython',
'message': 'Hello from MicroPython!'
}
api_post( '/sms', sms )