Luat模块应用手册-指南-luat二次开发教程-功能开发教程-HTTP

关键词:HTTP,POST,GET

http

简介

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS,所以HTTPS相关的指令只需要参考SSL部分配置连接,其他和http都是一样的。

API说明

http的API在luat lib有做封装,建议直接用lib的API接口。

API接口描述
http.request()发起http请求

详细的API介绍见http API章节

实现流程

通过调用功能强大的http.request(),发送HTTP请求即可

http.request(method, url, cert, head, body, timeout, cbFnc, rcvFileName)

参数详细说明参考上面连接[http API章节]说明。

示例

相关实例程序在脚本库的demo\http文件夹下,此文只是摘抄其中一个实例,可以根据实际需要对demo其它内容进行研究。

执行HTTP请求的回调函数

result:true或者false,true表示成功收到了服务器的应答,false表示请求发送失败或者接收服务器应答失败
prompt:string类型,result为true时,表示服务器的应答码;result为false时,表示错误信息
head:table或者nil类型,表示服务器的应答头;result为true时,此参数为{head1=“value1”, head2=“value2”, head3=“value3”},value中不包含\r\n;result为false时,此参数为nil
body:string类型,表示接收到的应答实体数据

local function cbFnc(result,prompt,head,body)
    log.info("testHttp.cbFnc",result,prompt)
    if result and head then
        for k,v in pairs(head) do
            log.info("testHttp.cbFnc",k..": "..v)
        end
    end
    if result and body then
        log.info("testHttp.cbFnc","bodyLen="..body:len())
    end
end

HTTP请求函数

“GET”,HTTP请求方法
“www.lua.org”,HTTP请求url
cbFnc,执行HTTP请求的回调函数(请求发送结果以及应答数据接收结果都通过此函数通知用户)

http.request("GET","www.lua.org",nil,nil,nil,nil,cbFnc)

常见问题

是否支持HTTPS

支持,TLSV1.2

为什么频繁请求会失败

支持的http连接总数有限,最多支持10个连接,包括lib库的连接

为什么POST JSON格式的数据会出现失败

参考http的demo,在head参数中传入{[“Content-Type”]=“application/json”}

数据接收缓存问题

有如下两种缓存机制, http.request接口可以设置使用何种缓存机制,http的demo中有详细示例可供参考

  1. 内存缓存:内存中有一个缓冲区,在项目剩余可用内存的范围内,此缓冲区没有大小限制,例如项目可用内存剩余200KB,则此缓冲区的理想最大值是200KB;收到的数据都会缓存到此缓冲区,如果收到的数据超过缓冲区大小,会导致内存不足重启;数据接收完整后,通过回调函数传出缓冲区数据,供用户应用脚本使用

注意:缓冲区位于内存中,断电或者重启后,缓冲区中的数据会被清空;如果接收的数据过多,不建议使用内存缓存的机制,可能会导致内存不足重启
  2) 文件缓存:接收到的数据可以保存在文件中,在文件系统剩余空间的范围内,此文件没有大小限制,例如项目剩余文件系统空间200KB,则此文件的理想最大值是200KB;收到的数据都会保存到此文件中,如果收到的数据文件最大值,会导致保存失败,新数据被丢弃;数据接收完整后,通过回调函数传出文件完整路径,供用户应用脚本使用

注意:文件位于文件系统中,断电或者重启后,文件不会被自动清空删除;如果文件已经不再使用,一定要通过os.remove接口将文件删除。否则会一直占用文件系统空间,导致可用文件系统空间变小

相关资料以及购买链接

如何使用http.request接口
手把手教你用Air724UG做一个Weather APP
相关开发板购买链接
Air724UG开发板
Air724 开发板使用说明

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值