概述:

  最近在做一个项目,需要用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   

   

转载于:https://www.cnblogs.com/wdy0505/p/10094816.html

stm32f103zet6实现HTTP协议请求,UTF-8转码JSON打包上传相关推荐

  1. android两个java文件内容_java – 在1个请求中将多个文件从Android上传...

    我知道我可以使用multipart / form POST请求一次将1个文件上传到AppEngine. AppEngine也支持uploading multiple files,但你必须做一些运行的J ...

  2. 文件上传漏洞实验-通过截取http请求绕过前端javascript验证进行文件上传

    1.什么是文件上传漏洞 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效的,部分文件上传漏洞 ...

  3. flutter网络请求dio的get、post、上传文件、下载文件总结

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...

  4. ORM中的事务和锁、Ajax异步请求和局部刷新、Ajax文件上传、日期时间类型的Json、多表查询图书系统

    一.ORM中的事务和锁 事务 事务要确保原子性 """ 事务ACID原子性:不可分隔的最小单位一致性:跟原子性是相辅相成隔离性:事务之间相互不干扰持久性:事务一旦确认永久 ...

  5. SpringBoot→请求参数、返回参数、文件上传、拦截器、异常处理、定时任务、异步任务

    web请求static静态资源 localhost:8080/cat.png localhost:8080/test.html localhost:8080/abc/test.html localho ...

  6. Net5上传文件请求大小限制设置(默认最大只能上传28.61m)

    在IIS上配置文件上传上限(在vs下使用IIS Express 调试时也可生效) 第一步:在项目工程下创建web.config,设置文件属性[复制到输出目录]为始终复制或较新复制 <?xml v ...

  7. SpringMVC→简介、MVC、SpringMVC工作原理、Maven搭建第一个SpringMVC、请求参数接收、重定向、文件上传、AJAX异步访问、请求参数接收绑定JSON、@注解及传参

    MVC SpringMVC工作原理 Maven搭建第一个SpringMVC 目录结构 web.xml *-servlet.xml Controller请求处理类 跳转页面 Maven运行服务器项目 浏 ...

  8. 源生ajax同步异步请求,源生JS怎样实现文件异步上传

    这次给大家带来源生JS怎样实现文件异步上传,源生JS实现文件异步上传的注意事项有哪些,下面就是实战案例,一起来看一下. 名称 文件 确定 function ajaxUploadFile() { var ...

  9. HTTP请求过程 常见协议 请求类型 状态码 websocket

    HTTP(HyperText Transfer Protocol)超文本传输协议,是一种用于分布式.协作式和超媒体信息系统的应用层协议. HTTP 是一个简单的请求-响应协议,是客户端和服务端之间请求 ...

最新文章

  1. EAP-MD5认证暴力破解工具eapmd5pass
  2. 在网络推广外包中企业网站排名优化在网络推广外包中如何实现?
  3. mac系统下git、mysql、nginx、php的环境搭建
  4. Android MTK平台最完备的开机动画修改教程
  5. oracle 声明二维数组,[zt]C++二维数组讲解、二维数组的声明和初始化
  6. 宝塔清mysql主从日志_宝塔面板Mysql主从日志文件mysql-bin文件清除方法
  7. -bash-4.1问题
  8. 计算机控制 重修,计算机控制技术重修复习提纲.doc
  9. 员工需签军令状放弃年终奖?传小米推出特殊激励计划 官方回应...
  10. 让ie8按照ie7 的方式来进行解析
  11. 2021-2025年中国再生聚酯行业市场供需与战略研究报告
  12. 14.初步解析document的核心元数据以及图解剖析index创建反例
  13. python零基础自学教材-python萌新:从零基础入门到放弃
  14. js排序算法详解-堆排序
  15. Mysql事物隔离级别
  16. 最全 MyBatis 核心配置文件总结,速度收藏了~
  17. 什么是servlet?有什么作用?
  18. Lua里面new一个对象详细步骤
  19. 在 Kali Linux安装环境中,配置网络出现DHCP错误,解决方案。(安装kali Linux的网络配置失败问题)
  20. git如何查看缓存区文件内容_[暂存盘已满怎么解决]git暂存区的理解

热门文章

  1. Rancher使用--后端流水线
  2. Ubuntu 12.04下关闭图形界面
  3. 一个线程池 bug 引发的 GC 思考!
  4. Spring的核心思想,总结得非常好!
  5. HBase进化 | 从NoSQL到NewSQL,凤凰涅槃成就Phoenix
  6. 一致 Hash 算法
  7. php升级的痛苦,升级 PHP 7.4 带来的两个大坑
  8. html中基本选择器的优先级,CSS_CSS中的各种选择器与样式优先级小结,优先级:由高到低(从上到下)- phpStudy...
  9. 语言用加法实现加饭运算_「编程之美」用C语言实现状态机(超实用)
  10. 数据中心柴油发电机组功率有哪几种?