Browse Source

add: http库的testcase, 收集有问题的请求

Wendal Chen 2 years ago
parent
commit
7a9d80d713
1 changed files with 106 additions and 0 deletions
  1. 106 0
      test/http_test/main.lua

+ 106 - 0
test/http_test/main.lua

@@ -0,0 +1,106 @@
+
+-- 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 = "czcjhp1985cbm"
+        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()之后后面不要加任何语句!!!!!