| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- -- LuaTools需要PROJECT和VERSION这两个信息
- PROJECT = "httpdemo"
- VERSION = "1.0.0"
- --[[
- 本demo需要http库, 大部分能联网的设备都具有这个库
- http也是内置库, 无需require
- ]]
- -- sys库是标配
- _G.sys = require("sys")
- --[[特别注意, 使用http库需要下列语句]]
- _G.sysplus = require("sysplus")
- sys.taskInit(function()
- -----------------------------
- -- 统一联网函数, 可自行删减
- ----------------------------
- if wlan and wlan.connect then
- -- wifi 联网, ESP32系列均支持
- local ssid = "uiot"
- local password = "12345678"
- log.info("wifi", ssid, password)
- -- TODO 改成esptouch配网
- LED = gpio.setup(12, 0, gpio.PULLUP)
- wlan.init()
- wlan.setMode(wlan.STATION)
- wlan.connect(ssid, password, 1)
- local result, data = sys.waitUntil("IP_READY", 30000)
- log.info("wlan", "IP_READY", result, data)
- device_id = wlan.getMac()
- elseif mobile and mobile.imei then
- -- Air780E/Air600E系列
- --mobile.simid(2)
- LED = gpio.setup(27, 0, gpio.PULLUP)
- device_id = mobile.imei()
- log.info("ipv6", mobile.ipv6(true))
- sys.waitUntil("IP_READY", 30000)
- elseif w5500 then
- -- w5500 以太网, 当前仅Air105支持
- w5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)
- w5500.config() --默认是DHCP模式
- w5500.bind(socket.ETH0)
- LED = gpio.setup(62, 0, gpio.PULLUP)
- sys.wait(1000)
- -- TODO 获取mac地址作为device_id
- end
- -- 打印一下支持的加密套件, 通常来说, 固件已包含常见的99%的加密套件
- if crypto.cipher_suites then
- log.info("cipher", "suites", json.encode(crypto.cipher_suites()))
- end
- -------------------------------------
- -------- HTTP 演示代码 --------------
- -------------------------------------
-
- while 1 do
- -- 最普通的Http GET请求
- local code, headers, body = http.request("GET", "https://www.air32.cn/").wait()
- log.info("http.get", "air32.cn", code)
- sys.wait(100)
- -- ipv6测试, 仅EC618系列支持
- local code, headers, body = http.request("GET", "https://mirrors6.tuna.tsinghua.edu.cn/", nil, nil, {ipv6=true}).wait()
- log.info("http.get", "ipv6", code, json.encode(headers or {}), body and #body or 0)
- sys.wait(100)
- -- 一个比较特别的外网URL, 获取地震信息的
- local url ="https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson"
- local code, headers, body = http.request("GET", url).wait()
- log.info("http.get", "earthquakes", code, json.encode(headers or {}), body and #body or 0)
- sys.wait(100)
- -- 超长URL测试
- local url ="https://www.baidu.com/?fdasfaisdolfjadklsjfklasdjflka=fdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflkafdasfaisdolfjadklsjfklasdjflka"
- local code, headers, body = http.request("GET", url).wait()
- log.info("http.get", "longurl", code, json.encode(headers or {}), body and #body or 0)
- sys.wait(100)
- -- 阿里云自动注册设备的验证, 不一样是200
- local url ="https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"
- local req_headers = {}
- req_headers["Content-Type"] = "application/x-www-form-urlencoded"
- local req_body = "productKey=he1iZrw123&deviceName=861551056136351&random=2717&sign=DD31BA6E9E087A6DD88E96FD47A7AAA3&signMethod=HmacMD5"
- -- req_headers["Content-Length"] = tostring(#req_body)
- local code, headers, body = http.request("POST", url, req_headers, req_body).wait()
- log.info("http.get", "aliyun", code, json.encode(headers or {}), body and #body or 0)
- sys.wait(100)
- -- Content-Length:0的情况
- local code, headers, body = http.request("GET", "http://air32.cn/test/zero.txt").wait()
- log.info("http.get", "emtry content", code, json.encode(headers or {}), body and #body or 0)
- sys.wait(100)
- sys.wait(600000)
- end
- end)
- -- 用户代码已结束---------------------------------------------
- -- 结尾总是这一句
- sys.run()
- -- sys.run()之后后面不要加任何语句!!!!!
|