stm32f103zet6實現HTTP協議請求,UTF-8轉碼JSON打包上傳


概述:

  最近在做一個項目,需要用stm32f103zet6開發板走HTTP協議,向疲勞駕駛檢測設備發送請求消息,使其下發人臉識別的圖片或參數信息,開發板進行接收,要求如下:

  1. 開發板作為客戶端、疲勞駕駛檢測是被作為服務器端 

  2. 標准HTTP協議

  3. 請求方法使用POST請求方式,上傳或下發的數據放在消息主體中(entity-body)

  4. 所有字符串需進行UTF-8轉碼

  5. 雙方交換的數據統一打包為JSON格式

 

思路:

  1. 封裝HTTP請求數據包

    (1)弄清楚請求消息的具體格式

    (2)按照cJSON的使用方法用cJSON庫中的接口函數將HTTP請求消息的數據封裝為JSON包

  2. 按照TCP-Client的流程進行TCP連接

  3. 客戶端向服務器端發送HTTP請求信息

   將封裝的JSON數據包放在TCP發送函數中,發送給服務器

  4. 服務器端接收到請求后向客戶端發送響應信息

   用TCP接收函數接收消息,接收到的消息應該是UTF-8編碼的,JSON包數據

  5. 對JSON包數據進行解析

  6. 服務器關閉TCP連接

   一般情況下,一旦服務器向瀏覽器發送完數據后它就要關閉TCP連接,除非客戶端或服務器發送信息的時候加上了以下代碼:

   Connection:keep-alive

   TCP連接在發送后將仍然保持打開狀態

問題:

  1. HTTP請求消息的格式是什么???如下圖(1)是標准請求消息格式,請具體舉例,比如 獲取人臉圖片的請求消息格式是什么???在產品手冊中說明如圖(2)

   

   

                (1)

   

                    (2)

 

  

  2. 知道了具體的請求消息格式后,

   (1)是否先需要造一個請求消息的字符串數組,然后再將該字符串數組進行UTF-8編碼???,然后再將該UTF-8編碼后的數據進行JSON封裝???

   (2)或是直接使用cJSON數據庫按照請求消息格式封裝一個請求消息的JSON包,然后再將該JSON包進行UTF-8轉碼???

  3. 針對第2個問題中的(1)(2)兩點:

   (1)UTF-8編碼后的數據進行JSON封裝后,是否還需要轉化成普通的字符串數據后,再通過TCP發送函數發送給服務器???

   (2)先JSON封轉再進行UTF-8轉碼后,是直接通過TCP發送函數發送,還是需要再轉化成普通字符串數據后再通過tcp發送函數發送給服務器???

  4. 服務器響應客戶端后,是否直接關閉TCP連接,還是在客戶端發送請求消息的時候添加以下代碼保持TCP連接???

   Connection:keep-alive   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM