javascript
stm32f103zet6实现HTTP协议请求,UTF-8转码JSON打包上传
概述:
最近在做一個項目,需要用stm32f103zet6開發(fā)板走HTTP協(xié)議,向疲勞駕駛檢測設備發(fā)送請求消息,使其下發(fā)人臉識別的圖片或參數(shù)信息,開發(fā)板進行接收,要求如下:
1. 開發(fā)板作為客戶端、疲勞駕駛檢測是被作為服務器端?
2. 標準HTTP協(xié)議
3. 請求方法使用POST請求方式,上傳或下發(fā)的數(shù)據(jù)放在消息主體中(entity-body)
4. 所有字符串需進行UTF-8轉碼
5. 雙方交換的數(shù)據(jù)統(tǒng)一打包為JSON格式
?
思路:
1. 封裝HTTP請求數(shù)據(jù)包
(1)弄清楚請求消息的具體格式
(2)按照cJSON的使用方法用cJSON庫中的接口函數(shù)將HTTP請求消息的數(shù)據(jù)封裝為JSON包
2. 按照TCP-Client的流程進行TCP連接
3. 客戶端向服務器端發(fā)送HTTP請求信息
將封裝的JSON數(shù)據(jù)包放在TCP發(fā)送函數(shù)中,發(fā)送給服務器
4. 服務器端接收到請求后向客戶端發(fā)送響應信息
用TCP接收函數(shù)接收消息,接收到的消息應該是UTF-8編碼的,JSON包數(shù)據(jù)
5. 對JSON包數(shù)據(jù)進行解析
6. 服務器關閉TCP連接
一般情況下,一旦服務器向瀏覽器發(fā)送完數(shù)據(jù)后它就要關閉TCP連接,除非客戶端或服務器發(fā)送信息的時候加上了以下代碼:
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài)
問題:
1. HTTP請求消息的格式是什么???如下圖(1)是標準請求消息格式,請具體舉例,比如 獲取人臉圖片的請求消息格式是什么???在產品手冊中說明如圖(2)
(1)
(2)
?
2. 知道了具體的請求消息格式后,
(1)是否先需要造一個請求消息的字符串數(shù)組,然后再將該字符串數(shù)組進行UTF-8編碼???,然后再將該UTF-8編碼后的數(shù)據(jù)進行JSON封裝???
(2)或是直接使用cJSON數(shù)據(jù)庫按照請求消息格式封裝一個請求消息的JSON包,然后再將該JSON包進行UTF-8轉碼???
3. 針對第2個問題中的(1)(2)兩點:
(1)UTF-8編碼后的數(shù)據(jù)進行JSON封裝后,是否還需要轉化成普通的字符串數(shù)據(jù)后,再通過TCP發(fā)送函數(shù)發(fā)送給服務器???
(2)先JSON封轉再進行UTF-8轉碼后,是直接通過TCP發(fā)送函數(shù)發(fā)送,還是需要再轉化成普通字符串數(shù)據(jù)后再通過tcp發(fā)送函數(shù)發(fā)送給服務器???
4. 服務器響應客戶端后,是否直接關閉TCP連接,還是在客戶端發(fā)送請求消息的時候添加以下代碼保持TCP連接???
Connection:keep-alive
轉載于:https://www.cnblogs.com/wdy0505/p/10094816.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的stm32f103zet6实现HTTP协议请求,UTF-8转码JSON打包上传的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go——切片(二)
- 下一篇: ubuntu QT Creater 安装