ESP32 Arduino (十) HTTPClient库

一、简介

1.前言

很多时候我们需要ESP32去访问外网的服务器获取一些网络资源,HTTP服务器是最常见的服务器,在这个时候就需要ESP32作为HTTPClient使用,HttpClient是Apache中的一个开源的项目。它实现了HTTP标准中Client端的所有功能,使用它能够很容易地进行HTTP信息的传输。

HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。

HttpClient 相比传统 JDK 自带的 URLConnection,增加了易用性和灵活性,它不仅是客户端发送 HTTP 请求变得容易,而且也方便了开发人员测试接口(基于 HTTP 协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握 HttpClient 是很重要的必修内容,掌握 HttpClient 后,相信对于 HTTP 协议的了解会更加深入。

2.URL 基本介绍

平时我们俗称的”网址“,其实就是 URL(Uniform Resource Locator),翻译为统一资源定位符,互连网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

(1)URL 基本格式

  • URL 的标准格式如下:

协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]
  • URL 的完整格式如下:

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]

(2)URL 参数介绍

3.json解析

一般我们的http请求和响应都以json数据来进行交互,这里就先简略说下如何解析json数据,我们可以使用arduinoJson库和一个解析网站来完成这些工作

https://arduinojson.org/v6/assistant/#/step1

以我们这一篇JSON为例

{"results":[{"location":{"id":"WW7MBNP039PE","name":"泰安","country":"CN","path":"泰安,泰安,山东,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"晴","code":"0","temperature":"28"},"last_update":"2020-09-09T10:09:00+08:00"}]}

我们只需要先安装arduinoJson库,然后进入这个网站

输入需要解析的文件

然后就可以生成对于的解析代码了

关于arduinoJson的使用后面再详细讲解。

二、相关函数

使用时包含头文件:

#include <HTTPClient.h>

1. 创建对象

HTTPClient http;

2. HTTPClient对象初始化

/**
 * 解析url以获得所有参数,默认port是80端口
 * @param url String
 */
bool begin(String url);

/**
 * 解析url以获得所有参数,默认port是80端口
 * @param client : 传入一个网络连接客户端
 * @param url String
 */
bool begin(WiFiClient &client, String url);

/**
 * 设置host port 以及uri
 * @param host String(192.168.1.12,不需要带上http://前缀)
 * @param port uint16_t
 * @param uri  String
 */
bool begin(String host, uint16_t port, String uri = "/");

/**
 * 设置host port 以及uri
 * @param client 传入一个网络连接客户端
 * @param host String(192.168.1.12,不需要带上http://前缀)
 * @param port uint16_t
 * @param uri  String
 * @param https bool 是否启用https
 */
bool begin(WiFiClient &client, String host, uint16_t port, String uri = "/", bool https = false);

/**
 * 设置host port 以及uri
 * @param host String(192.168.1.12,不需要带上http://前缀)
 * @param port uint16_t
 * @param uri  String
 * @param CAcert CA证书(https)
 */
bool begin(String host, uint16_t port, String uri, const char* CAcert);
bool begin(String host, uint16_t port, String uri, const char* CAcert, const char* cli_cert, const char* cli_key);

2. HTTPClient设置请求头信息

<
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值