2.8 haas506 2.0开发教程-高级组件库-http


-----------------------待完善--------------------------------------

最新案例教程点击下方链接跳转,CSDN已停止更新

点击跳转HaaS506官方最新案例







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()

getpostdownloadget_responseget_response_headerget_response_codeset_headerset_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数据请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值