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   

   

猜你喜欢

转载自www.cnblogs.com/wdy0505/p/10094816.html