haas506 2.0开发教程-高级组件库-http
-----------------------待完善--------------------------------------
最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
1.http下载
案例说明:
- 通过http下载文本和音频,读取文本内容和播放音频,最后删除下载的文件
main.py
# coding=utf-8
# This is a sample Python script.
# 连上网才可以 下载文件
#只能http,不能https;如果是https可以将s去除 试试
# http://cm-test000.oss-cn-beijing.aliyuncs.com/http_download_demo/helloworld.mp3
# http://cm-test000.oss-cn-beijing.aliyuncs.com/http_download_demo/http_download_demo.txt
# http://fastread-audio.oss-cn-shenzhen.aliyuncs.com/fastread/audio/2317e5c37b054057a42002852298b324.mp3
import http
import uos
from audio import Audio
import network
import utime as time
g_connect_status = False
def on_4g_cb(args):
global g_connect_status
pdp = args[0]
netwk_sta = args[1]
if netwk_sta == 1:
g_connect_status = True
else:
g_connect_status = False
def connect_network():
global net,on_4g_cb,g_connect_status
net = network.NetWorkClient()
g_register_network = False
if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
g_register_network = True
else:
g_register_network = False
if g_register_network:
net.on(1,on_4g_cb)
net.connect(None)
else:
print('网络注册失败')
while True:
if g_connect_status:
print('网络连接成功')
break
time.sleep_ms(20)
def download():
htp=http.client()
print('filename in directory of user before downloading:',uos.listdir('/user'))
htp.download('http://cm-test000.oss-cn-beijing.aliyuncs.com/http_download_demo/http_download_demo.txt','user/http_download_demo.txt')
htp.download('http://cm-test000.oss-cn-beijing.aliyuncs.com/http_download_demo/helloworld.mp3','user/helloworld.mp3')
htp.download('http://fastread-audio.oss-cn-shenzhen.aliyuncs.com/fastread/audio/2317e5c37b054057a42002852298b324.mp3','user/edg.mp3')
print('filename in directory of user after downloading:',uos.listdir('/user'))
def read_txt():
f=open('/user/http_download_demo.txt','r')
content=f.read(10)
print('content in txt:',content)
f.close()
def delete():
print('before removing files:',uos.listdir('/user'))
uos.remove('/user/edg.mp3')
uos.remove('/user/helloworld.mp3')
uos.remove('/user/http_download_demo.txt')
print('after removing files:',uos.listdir('/user'))
def play():
#实例化audio
aud=Audio()
#开启使能
aud.set_pa()
#设置音量
aud.setVolume(5)
#播放
time.sleep(2)
aud.play('/user/helloworld.mp3')
time.sleep(5)
aud.play('/user/edg.mp3')
#关闭音频播放功能
#适当给一个延时
time.sleep(10)
aud.stop()
if __name__ == '__main__':
#连接网络
connect_network()
#下载
download()
#读文本内容
read_txt()
#播放音频
play()
#删除文件
delete()
日志输出
网络连接成功
filename in directory of user before downloading: ['board.json', 'iot.py', 'testiot.py', 'network.py','flash0', 'file.zip','a.txt']
filename in directory of user after downloading: ['board.json', 'iot.py', 'testiot.py', 'network.py', 'flash0', 'file.zip', 'a.txt', 'http_download_demo.txt', 'helloworld.mp3', 'edg.mp3']
content in txt: helloworld
before removing files: ['board.json', 'iot.py', 'testiot.py', 'network.py', 'flash0', 'file.zip', 'a.txt', 'http_download_demo.txt', 'helloworld.mp3', 'edg.mp3']
after removing files: ['board.json', 'iot.py', 'testiot.py', 'network.py', 'flash0', 'file.zip', 'a.txt']
2.http的get、post请求
get函数中只需填入合适的url,就可以从该url中获取相应的数据;post函数中需要填入合适的请求头header(注意\r\n),和数据内容body,和合适的url,就可以将body中的数据post过去。
main.py
# coding=utf-8
# This is a sample Python script.
import utime as time
import http
import network
g_connect_status = False
def on_4g_cb(args):
global g_connect_status
pdp = args[0]
netwk_sta = args[1]
if netwk_sta == 1:
g_connect_status = True
else:
g_connect_status = False
def connect_network():
global net,on_4g_cb,g_connect_status
net = network.NetWorkClient()
g_register_network = False
if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
g_register_network = True
else:
g_register_network = False
if g_register_network:
net.on(1,on_4g_cb)
net.connect(None)
else:
print('network register failed')
while True:
if g_connect_status:
print('network register successed')
break
time.sleep_ms(20)
def get():
global htp
url = 'yourURL'
ret = htp.get(url)
if ret < 0:
print('http get return failed %d'%ret)
return None
responsebody = htp.get_response()
print("responsebody:",responsebody)
responsecode = htp.get_response_code()
print('get_response_code:',responsecode)
def post():
global htp
header = 'Content-Type: application/json\r\nAccept: application/json\r\n'
body = "[{'controlType': '0281','deviceNum': '08F155140004','loadName': '东','loadTypeSid': 95,'sensorType': 0}]"
url = 'yourURL'
htp.set_header(header)
htp.set_data(body,len(body))
ret = htp.post(url)
if ret < 0:
print('http post return failed %d'%ret)
return None
responsebody = htp.get_response()
print('responsebody:',responsebody)
responsecode = htp.get_response_code()
print('get_response_code:',responsecode)
if __name__=='__main__':
#实例化http
htp=http.client()
#连接网络
connect_network()
print('----------test http-get------------')
#get功能测试
get()
#post功能测试
print('----------test http-post-----------')
post()
日志输出
----------test http-get------------
{"code":1017,"msg":"充电桩不存在","data":null}
get_response_code:200
----------test http-post-----------
responsebody: {
"rtData":"",
"rtMsg":"上报成功",
"rtState":true
}
get_response_code:200
3.Class-http
http.client()
get | post | download | get_response | get_response_header | get_response_code | set_header | set_data |
---|---|---|---|---|---|---|---|
get请求 | post 请求 | 下载资源 | 获取响应内容 | 获取响应头 | 获取响应状态码 | 作用: 设置请求header参数 | 设置数据包 |
实例化:htp=http.client()
htp.get(url)
作用: 执行http get 请求
参数: url
返回: 0成功
htp.post(url)
作用: 执行http post 请求
参数: url
返回: 0成功
htp.download(url, path)
作用: 设置请求header参数
参数: url-请求的url,path-保存的文件路径
返回: 0成功
htp.get_response()
作用: 获取响应内容
返回: 响应头
htp.get_response_code()
作用: 获取响应状态码
返回: 正常为200
htp.set_header(header)
作用: 设置请求header参数
参数: header
返回: 0成功
htp.set_data(body, len(body))
作用: 设置数据包,包含body和body的长度
参数: body,len(body)
返回: 0成功
4.总结
本节介绍了如何使用haas506的高级组件库的http模块,实现了http下载资源、http的get和post数据请求。