?大家好,今天我們來(lái)學(xué)習(xí)合宙Air780E模組LuatOS開發(fā)4G通信中HTTP網(wǎng)絡(luò)協(xié)議的應(yīng)用,實(shí)現(xiàn)模組和服務(wù)器之間數(shù)據(jù)的傳輸。
一、HTTP概述
1.1 簡(jiǎn)介
HTTP是HyperTextTransferProtocol(超文本傳輸協(xié)議)的縮寫。HTTP是一個(gè)應(yīng)用層協(xié)議,由請(qǐng)求和響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型。HTTP是一個(gè)無(wú)狀態(tài)的協(xié)議。HTTP協(xié)議通常承載于TCP協(xié)議之上,有時(shí)也承載于TLS或SSL協(xié)議層之上,這個(gè)時(shí)候,就成了我們常說(shuō)的HTTPS,所以HTTPS相關(guān)的指令只需要參考SSL部分配置連接,其他和http都是一樣的。
HTTP協(xié)議的_主要應(yīng)用場(chǎng)景_有:基于瀏覽器的網(wǎng)頁(yè)獲取與表單提交、文件上傳與下載、移動(dòng)應(yīng)用、物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)上報(bào)等。
1.2 請(qǐng)求報(bào)文
?
●method:請(qǐng)求方法,GET和POST是最常見的HTTP方法。
●URL:為請(qǐng)求對(duì)應(yīng)的URL地址,它和報(bào)文頭的Host屬性組成完整的請(qǐng)求URL。
●Version:協(xié)議名稱及版本號(hào)。
●Headerlines:HTTP的報(bào)文頭,報(bào)文頭包含若干個(gè)屬性,格式為“屬性名:屬性值”,服務(wù)端據(jù)此獲取客戶端的信息。
●Entitybody:是報(bào)文體,它將一個(gè)頁(yè)面表單中的組件值通過(guò)param1=value1&m2=value2的鍵值對(duì)形式編碼成一個(gè)格式化串,它承載多個(gè)請(qǐng)求參數(shù)的數(shù)據(jù)。
●請(qǐng)求報(bào)文示例如下:
?
1.3 響應(yīng)報(bào)文
?
●version:報(bào)文協(xié)議及版本。
●statuscode:狀態(tài)碼及狀態(tài)描述。
●phrase:原因短語(yǔ)。
●Headerlines:響應(yīng)報(bào)文頭。
●Entitybody:響應(yīng)報(bào)文體,即我們真正要的內(nèi)容。
●響應(yīng)報(bào)文示例如下:
?
注意:sp表示空格,crlf表示回車換行,報(bào)文頭和報(bào)文體之間要有一行空格
1.4 HTTP請(qǐng)求方法
HTTP客戶端發(fā)出請(qǐng)求,告知服務(wù)端需要執(zhí)行不同類型的請(qǐng)求命令,這些命令被稱為HTTP方法。
●GET:獲取資源方法
●POST:傳輸實(shí)體數(shù)據(jù)方法
●HEAD:獲取頭部報(bào)文方法
●PUT:傳輸文件方法
●DELETE:刪除指定資源方法
1.5 HTTP狀態(tài)碼
HTTP狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型。響應(yīng)分為五類:
●信息響應(yīng)(100–199),信息響應(yīng)中,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作;
●成功響應(yīng)(200–299),信息響應(yīng)成功,操作被成功接收并處理;
●重定向,需要進(jìn)一步操作(300–399),信息需要被重新定向,需要進(jìn)一步的操作以完成請(qǐng)求;
●客戶端錯(cuò)誤(400–499),客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求;
●服務(wù)器錯(cuò)誤(500–599),服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤。
二、演示功能概述
本文教你合宙4G模組使用LuatOS開發(fā)4G通信中http網(wǎng)絡(luò)協(xié)議的應(yīng)用,實(shí)現(xiàn)模組和服務(wù)器之間數(shù)據(jù)的傳輸!
本教程實(shí)現(xiàn)的功能定義是:
使用Air780E核心板下載Air780的LuatOS示例代碼中http的例程進(jìn)行驗(yàn)證,包含get請(qǐng)求,post請(qǐng)求,文件上傳,文件下載等功能。
三、硬件環(huán)境
3.1 Air780E核心板
使用Air780E核心板,如下圖所示:
?
此核心板的詳細(xì)使用說(shuō)明參考:Air780E產(chǎn)品手冊(cè)中的<<開發(fā)板Core_Air780E使用說(shuō)明VX.X.X.pdf>>,寫這篇文章時(shí)最新版本的使用說(shuō)明為:開發(fā)板Core_Air780E使用說(shuō)明V1.0.5.pdf;核心板使用過(guò)程中遇到任何問(wèn)題,可以直接參考這份使用說(shuō)明pdf文檔。
3.2 SIM卡
中國(guó)大陸環(huán)境下,可以上網(wǎng)的sim卡,一般來(lái)說(shuō),使用移動(dòng),電信,聯(lián)通的物聯(lián)網(wǎng)卡或者手機(jī)卡都行;
3.3 PC電腦
WINDOWS系統(tǒng),其他暫無(wú)特別要求;
3.4 數(shù)據(jù)通信線
USB數(shù)據(jù)線,暫無(wú)特別要求;
四、軟件環(huán)境
4.1 Luatools工具
要想燒錄AT固件到4G模組中,需要用到合宙的強(qiáng)大的調(diào)試工具:Luatools;
詳細(xì)使用說(shuō)明參考:Luatools工具使用說(shuō)明。
Luatools工具集具備以下幾大核心功能:
- 一鍵獲取最新固件:自動(dòng)連接合宙服務(wù)器,輕松下載最新的合宙模組固件。
- 固件與腳本燒錄:便捷地將固件及腳本文件燒錄至目標(biāo)模組中。
- 串口日志管理:實(shí)時(shí)查看模組通過(guò)串口輸出的日志信息,并支持保存功能。
- 串口調(diào)試助手:提供簡(jiǎn)潔的串口調(diào)試界面,滿足基本的串口通信測(cè)試需求。
Luatools下載之后,無(wú)需安裝,解壓到你的硬盤,點(diǎn)擊Luatools_v3.exe運(yùn)行,出現(xiàn)如下界面,就代表Luatools安裝成功了.
4.2 準(zhǔn)備需要燒錄的代碼
首先要說(shuō)明一點(diǎn):腳本代碼,要和固件的bin文件一起燒錄。
4.2.1 燒錄的底層固件文件
底層core下載地址:LuatOS固件版本下載地址
?
Air780E的底層固件在Luatools解壓后目錄的LuatOS-SoC_V1112_EC618_FULL.soc
?
4.2.2 燒錄的腳本代碼
首先要下載Air780的LuatOS示例代碼到一個(gè)合適的項(xiàng)目目錄,示例代碼網(wǎng)站:https://gitee.com/openLuat/LuatOS-Air780E
下載流程參考下圖:
?
?
下載的文件解壓,找到
LuatOS-Air780E-masterdemohttpmain.lua,如圖:
?
4.3 燒錄步驟
4.3.1 正確連接電腦和4G模組電路板
使用帶有數(shù)據(jù)通信功能的數(shù)據(jù)線,不要使用僅有充電功能的數(shù)據(jù)線;
4.3.2 識(shí)別4G模組的boot引腳
在下載之前,要用模組的boot引腳觸發(fā)下載,也就是說(shuō),要把4G模組的boot引腳拉到1.8v,或者直接把boot引腳和VDD_EXT引腳相連。我們要在按下BOOT按鍵時(shí)讓模塊開機(jī),就可以進(jìn)入下載模式了。
具體到Air780E開發(fā)板:
1、當(dāng)我們模塊沒(méi)開機(jī)時(shí),按著BOOT鍵然后長(zhǎng)按PWR開機(jī)。
2、當(dāng)我們模塊開機(jī)時(shí),按著BOOT鍵然后點(diǎn)按重啟鍵即可。
?
4.3.3 識(shí)別電腦的正確端口
判斷是否進(jìn)入BOOT模式:模塊上電,此時(shí)在電腦的設(shè)備管理器中,查看串口設(shè)備,會(huì)出現(xiàn)一個(gè)端口表示進(jìn)入了boot下載模式,如下圖所示:
?
當(dāng)設(shè)備管理器出現(xiàn)了3個(gè)連續(xù)數(shù)字的com端口,并且每個(gè)數(shù)字都大于4,這時(shí)候,硬件連接上就緒狀態(tài),恭喜你,可以進(jìn)行燒錄了!
4.3.4 用LuatOS工具燒錄
- 新建項(xiàng)目
首先,確保你的Luatools的版本,上大于3.0.6版本的。
在Luatools的左上角上有版本顯示的,如圖所示:
?
Luatools版本沒(méi)問(wèn)題的話,就點(diǎn)擊LuaTOols右上角的“項(xiàng)目管理測(cè)試”按鈕,如下圖所示:
?
這時(shí)會(huì)彈出項(xiàng)目管理和燒錄管理的對(duì)話框,如下圖:
?
- 開始燒錄
選擇780E板子對(duì)應(yīng)的底層core和剛改的main.lua腳本文件。下載到板子中。
?
點(diǎn)擊下載后,我們需要進(jìn)入boot模式才能正常下載。
?
?
五、API說(shuō)明
http客戶端:
http.request(method,url,headers,body,opts,ca_file,client_ca,client_key,client_password)
參數(shù)
傳入值類型 | 解釋 |
---|---|
string | 請(qǐng)求方法,支持GET/POST等合法的HTTP方法 |
string | url地址,支持http和https,支持域名,支持自定義端口 |
tabal | 請(qǐng)求頭可選例如{[“Content-Type”]=“application/x-www-form-urlencoded”} |
string/zbuff | body可選 |
table | 額外配置可選包含timeout:超時(shí)時(shí)間單位ms可選,默認(rèn)10分鐘,寫0即永久等待dst:下載路徑,可選adapter:選擇使用網(wǎng)卡,可選debug:是否打開debug信息,可選,ipv6:是否為ipv6默認(rèn)不是,可選callback:下載回調(diào)函數(shù),參數(shù)content_len:總長(zhǎng)度body_len:以下載長(zhǎng)度userdata用戶傳參,可選userdata:回調(diào)自定義傳參 |
string | 服務(wù)器ca證書數(shù)據(jù),可選,一般不需要 |
string | 客戶端ca證書數(shù)據(jù),可選,一般不需要,雙向https認(rèn)證才需要 |
string | 客戶端私鑰加密數(shù)據(jù),可選,一般不需要,雙向https認(rèn)證才需要 |
string | 客戶端私鑰口令數(shù)據(jù),可選,一般不需要,雙向https認(rèn)證才需要 |
返回值
返回值類型 | 解釋 |
---|---|
int | code,服務(wù)器反饋的值>=100,最常見的是200.如果是底層錯(cuò)誤,例如連接失敗,返回值小于0 |
tabal | headers當(dāng)code>100時(shí),代表服務(wù)器返回的頭部數(shù)據(jù) |
string/int | body服務(wù)器響應(yīng)的內(nèi)容字符串,如果是下載模式,則返回文件大小 |
創(chuàng)建HTTP客戶端
?
六、功能驗(yàn)證
6.1 GET請(qǐng)求
HTTPGET請(qǐng)求是一種用于從指定資源URI(統(tǒng)一資源標(biāo)識(shí)符)請(qǐng)求數(shù)據(jù)的HTTP方法。它通常用于請(qǐng)求服務(wù)器發(fā)送資源(如HTML頁(yè)面、圖片等)給客戶端,且請(qǐng)求信息包含在URL中。
下面根據(jù)demo演示HTTP的GET請(qǐng)求用法,示例代碼如下(具體demo可以點(diǎn)此鏈接跳轉(zhuǎn))
示例如下:
?
對(duì)應(yīng)log:
?
6.2 POST請(qǐng)求
HTTPPOST請(qǐng)求是一種HTTP方法,用于向指定的資源提交數(shù)據(jù)。與GET請(qǐng)求不同,POST請(qǐng)求的數(shù)據(jù)包含在請(qǐng)求體中,可以提交大量數(shù)據(jù)且數(shù)據(jù)不會(huì)顯示在URL中,常用于提交表單數(shù)據(jù)或上傳文件等操作。
下面根據(jù)demo演示HTTP的POST請(qǐng)求方法提交一個(gè)表單,示例代碼如下(具體demo可以點(diǎn)此鏈接跳轉(zhuǎn))
示例:
?
對(duì)應(yīng)log:
?
6.3 文件上傳
HTTPPOST請(qǐng)求在文件上傳場(chǎng)景中發(fā)揮著關(guān)鍵作用。用戶通過(guò)POST請(qǐng)求可以將文件數(shù)據(jù)包含在請(qǐng)求體中發(fā)送給服務(wù)器,而不是像GET請(qǐng)求那樣通過(guò)URL傳遞。這種方式允許上傳大量數(shù)據(jù),包括各種類型的文件,如圖片、視頻、文檔等。服務(wù)器接收到請(qǐng)求后,會(huì)解析請(qǐng)求體中的文件數(shù)據(jù),并存儲(chǔ)到服務(wù)器上相應(yīng)的位置。文件上傳是HTTP應(yīng)用中常見的功能。
下面根據(jù)demo演示HTTP文件上傳的功能,示例代碼如下(具體demo可以點(diǎn)此鏈接跳轉(zhuǎn))
示例:
?
對(duì)應(yīng)log:
?
6.4 文件下載
下面根據(jù)demo演示HTTP文件下載的功能,示例代碼如下(具體demo可以點(diǎn)此鏈接跳轉(zhuǎn))
示例:
?
對(duì)應(yīng)log:
?
6.5 處理JSON數(shù)據(jù)
處理json數(shù)據(jù)主要有兩個(gè)函數(shù),json.encode(t)和json.decode(str),參考示例代碼:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/json
?
6.6 壓縮和解壓
這個(gè)例程用和風(fēng)天氣的api做演示,請(qǐng)求到的數(shù)據(jù)配合miniz庫(kù)進(jìn)行解壓,示例代碼如下(具體demo可以點(diǎn)此鏈接跳轉(zhuǎn))
示例:
?
對(duì)應(yīng)log:
?
也可以參考例程:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/miniz
?
七、總結(jié)
本文檔主要介紹4G通信中http網(wǎng)絡(luò)協(xié)議的應(yīng)用。講解了HTTP基本原理,GET和POST請(qǐng)求,以及文件上傳下載、HTTPS加密、JSON數(shù)據(jù)處理和數(shù)據(jù)壓縮等高級(jí)功能,直接燒錄例程即可測(cè)試,旨在實(shí)現(xiàn)高效、安全的數(shù)據(jù)傳輸。
八、常見問(wèn)題
8.1 HTTP支持多連接嗎
目前HTTP僅支持單連接,不支持多連接。
8.2 重試多次PDP,HTTP應(yīng)用一直連接失敗
如果重試多次PDP激活,PDP一直激活失敗,或者HTTP一直請(qǐng)求應(yīng)答失敗,則嘗試使用如下手段恢復(fù):
1、使用RESET引腳復(fù)位模塊
2、極端情況下,直接給模塊斷電,再上電,POWERKEY引腳拉低開機(jī)
8.3 為什么我只發(fā)了10字節(jié)消息,100次卻消耗了那么多流量?
因?yàn)檫€有HTTP自帶的請(qǐng)求頭。如何統(tǒng)計(jì)流量
8.4 為什么頻繁請(qǐng)求會(huì)失敗?
支持的http連接總數(shù)有限數(shù)量為tcp連接數(shù)量8個(gè),建議一個(gè)http連接返回請(qǐng)求結(jié)果之后,再去請(qǐng)求下一個(gè)連接;不要使用循環(huán)定時(shí)器方式不斷的發(fā)起新的http請(qǐng)求。
8.5 專網(wǎng)卡訪問(wèn)白名單
用定向Ip的物聯(lián)網(wǎng)卡,需要把域名或IP加入白名單才能使用。如果不加入白名單會(huì)出現(xiàn)無(wú)法訪問(wèn)服務(wù)器的情況.
?審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372754 -
網(wǎng)絡(luò)協(xié)議
+關(guān)注
關(guān)注
3文章
267瀏覽量
21534 -
HTTP
+關(guān)注
關(guān)注
0文章
504瀏覽量
31194 -
SSL
+關(guān)注
關(guān)注
0文章
125瀏覽量
25737
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論