获取行信息_WIFI实战应用第六章 ESP32联网之HTTP获取城市温度

本文介绍了ESP32通过HTTP协议获取城市温度的实现过程,涵盖HTTP原理、请求与应答格式,以及ESP32的HTTP接口。通过学习,读者可以掌握HTTP请求的构造、JSON数据解析,并了解ESP32如何处理HTTP请求和响应。
摘要由CSDN通过智能技术生成

HTTP获取城市温度

学习目的及目标

· 掌握HTTP原理和工作过程

· 掌握乐鑫ESP32HTTP获取服务器温度的程序设计

HTTP原理

HTTP是一套计算机网络通讯规则。下面只讲下请求格式,其他原理。

HTTP请求格式

HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。其中信息由三部分组成:

1. 请求方法,URI协议/版本:包括请求方式Method、资源路径URL、协议版本Version

2. 请求头:包括一些访问的域名、用户代理、Cookie等信息

3. 请求正文:就是HTTP请求的数据

备注:请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。下图所示就是GET的请求,没有请求正文。详细的说明在下边。

现在大多数协议版本为http/1.1

HTTP 应答格式

服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。数据主要由三部分组成:

1. 协议状态:包括协议版本Version、状态码Status Code、回应短语

2. 响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息

3. 响应正文:就是响应的具体数据

备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态

码代表不同的含义,其中

常见状态码的含义:

1. 200---OK/请求已经正常处理完毕

2. 301---/请求永久重定向

3. 302---/请求临时重定向

4. 304---/请求被重定向到客户端本地缓存

5. 400---/客户端请求存在语法错误

6. 401---/客户端请求没有经过授权

7. 403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限

8. 404---/客户端请求的URL在服务端不存在

9. 500---/服务端永久错误

10. 503---/服务端发生临时错误

HTTP报文格式(原文)

HTTP报文是HTTP应用程序之间传输的数据块,HTTP报文分为HTTP请求报文和HTTP响应报文,但是无论哪种报文,他的整体格式是类似的,大致都是由起始、首部、主体三部分组成,起始说明报文的动作,首部说明报文的属性,主体则是报文的数据。接下来具体说明。

HTTP请求报文

e5bc71f89bb683e1a9c2de2a93654374.png

请求报文的起始由请求行构成(有些资料称为状态行,名字不一样而已,都是指的一个东西),用来说明该请求想要做什么,由、、 三个字段组成,注意每个字段之间都有一个空格。

其中字段有不同的值:

GET --- 访问服务器的资源

POST --- 向服务器发送要修改的数据

HEAD --- 获取服务器文档的首部

PUT --- 向服务器上传资源

DELETE--- 删除服务器的资源

字段表示服务器的资源目录定位

字段表示使用的http协议版本

首部部分由多个请求头(也叫首部行)构成,那些首部字段名有如下,不全:

Accept 指定客户端能够接收的内容格式类型

Accept-Language 指定客户端能够接受的语言类型

Accept-Ecoding 指定客户端能够接受的编码类型

User-Agent 用户代理,向服务器说明自己的操作系统、浏览器等信息

Connection 是否开启持久连接(keepalive)

Host 服务器域名

...

主体部分就是报文的具体数据。

HTTP响应报文

41ef960bb95f40126709c7257cc87f2c.png

响应报文的起始由状态行构成,用来说明服务器做了什么,由、、三个字段组成,同样的每个字段之间留有空格;

上边已经说明;

首部由多个响应头(也叫首部行)组成, 首部字段名如下,不全:

Server 服务器软件名,Apache/Nginx

Date 服务器发出响应报文的时间

Last-Modified 请求资源的最后的修改时间

...

主体部分是响应报文的具体数据。

JSON解析

此处HTTP获取城市的温度是访问心知天气的服务器,心知天气返回的数据是json格式,那么我们就需要使用到第三方的开源库cJSON了。ESP32的SDK已经自带这些移植好的库了,我们只需要直接使用即可。天气预报的数据格式如下所示:

关于cjson的使用,可参考。

软件设计

HTTP获取城市温度的主逻辑

f5b32e12a271276879ed2b3808e174ac.png

ESP32的HTTP详细过程逻辑

d26fdc2876ea51cf9ddd24d3f21400b4.png

ESP32的HTTP接口介绍

同TCP接口,因为此处是使用TCP数据包模拟HTTP包,完成发送和读取。

更多更详细接口请参考官方指南。

ESP32的HTTP总结

初始化wifi配置后,程序会根据WIFI的实时状态,在回调函数中给出状态返回,所以只需要在回调中进行相关操作,STA开始事件触发SC开始进行一键配置,在SC的回调中处理SC配置过程的事件,sc完成后,WIFI连上网后,就开始了HTTP的工作过程,很简单。

HTTP任务编写

温度数据JSON解析

效果展示

测试流程

· SmartConfig快配账号密码

· 自动连服务器获取温度

· 串口打开即可看获取的温度

效果展示

· SmartConfig配置

1a6def265068f58c7ce68131d907a73f.png

· 获取温度

99b6305b2c464b4790a9b2b7ee72eeef.png
02e6ea63d728f9fc3c562eef907bc638.png

HTTP总结

· 此处HTTP是使用TCP模拟的,所以过程和TCP章类似。

· HTTP部分参考官方的源码,sc参考官方源码。

· Sc没有保存密码。

· 源码地址:https://github.com/xiaolongba/wireless-tech

开源地址:https://github.com/HX-IoT/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值