ESP32 http 请求
目录
- 参考教程
- 1.使用的http连接
- 2.使用Vscode-IDF创建`http_request`例程
- 3.修改`http_request_example_main.c`函数
- 4.已经获取到响应的数据
参考教程
ESP-IDF HTTP获取网络时间
1.使用的http连接
http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp
请求可以得到下面Json数据

2.使用Vscode-IDF创建http_request例程
创建例程后,在设置中输入wifi的账号密码

3.修改http_request_example_main.c函数
http_request_example_main.c
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"
#include "protocol_examples_common.h"#include "lwip/err.h"
#include "lwip/sockets.h"
#include "lwip/sys.h"
#include "lwip/netdb.h"
#include "lwip/dns.h"
#include "sdkconfig.h"#include <cJSON.h>
#include "esp_http_client.h"static const char *TAG = "example";#define MAX_HTTP_OUTPUT_BUFFER 2048 // http最大数据接收大小
bool gettime = true; // 是否从网络请求时间
esp_err_t _http_event_handler(esp_http_client_event_t *evt)
{cJSON *pMacAdress = NULL;
#if 0
//switch判断事件代码提示出错可以写成if方式switch (evt->event_id){case HTTP_EVENT_ERROR:ESP_LOGI(TAG, "HTTP_EVENT_ERROR");break;case HTTP_EVENT_ON_CONNECTED:ESP_LOGI(TAG, "HTTP_EVENT_ON_CONNECTED");break;case HTTP_EVENT_HEADER_SENT:ESP_LOGI(TAG, "HTTP_EVENT_HEADER_SENT");break;case HTTP_EVENT_ON_HEADER:ESP_LOGI(TAG, "HTTP_EVENT_ON_HEADER");printf("%.*s", evt->data_len, (char *)evt->data);break;case HTTP_EVENT_ON_DATA:ESP_LOGI(TAG, "HTTP_EVENT_ON_DATA,len=%d", evt->data_len);if (!esp_http_client_is_chunked_response(evt->client)){printf("%.*s", evt->data_len, (char *)evt->data);}break;case HTTP_EVENT_ON_FINISH://http完成事件ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH");break;case HTTP_EVENT_DISCONNECTED://http断开连接事件ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED");break;}
#endifif (evt->event_id == HTTP_EVENT_ON_DATA) // 收到数据事件{ESP_LOGI(TAG, "HTTP_EVENT_ON_DATA,len=%d", evt->data_len);if (!esp_http_client_is_chunked_response(evt->client)){ESP_LOGI(TAG, "响应:%s", (char *)evt->data);cJSON *pJsonRoot = cJSON_Parse(evt->data); // cJSON解析json格式数据if (pJsonRoot != NULL) // 如果是否json格式数据{pMacAdress = cJSON_GetObjectItem(pJsonRoot, "api"); // 解析字段字符串内容if (pMacAdress != NULL){if (cJSON_IsString(pMacAdress)) // 判断字段是否string类型{ESP_LOGI(TAG, "api = %s", pMacAdress->valuestring);}}pMacAdress = cJSON_GetObjectItem(pJsonRoot, "v"); // 解析字段字符串内容if (pMacAdress != NULL){if (cJSON_IsString(pMacAdress)) // 判断字段是否string类型{ESP_LOGI(TAG, "v = %s", pMacAdress->valuestring);}}pMacAdress = cJSON_GetObjectItem(pJsonRoot, "ret");if (pMacAdress != NULL){// ret的数据应该怎么提取,不知道.有知道的朋友麻烦留言告知}pMacAdress = cJSON_GetObjectItem(pJsonRoot, "data"); // 解析字段字符串内容if (pMacAdress != NULL){cJSON *pSub_2 = cJSON_GetObjectItem(pMacAdress, "t");if (pSub_2 != NULL){if (cJSON_IsString(pSub_2)) // 判断字段是否string类型{ESP_LOGI(TAG, "data/t = %s", pSub_2->valuestring);}}}}else{ESP_LOGI(TAG, "数据错误,不是JSon格式");}cJSON_Delete(pJsonRoot);}}return ESP_OK;
}
static void http_get_task(void *pvParameters)
{while (gettime){char local_response_buffer[MAX_HTTP_OUTPUT_BUFFER] = {0};esp_http_client_config_t config = {.method = HTTP_METHOD_GET, // get方式请求数据.url = "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp",// .url = "http://sensor.local/number/sensor_time",.event_handler = _http_event_handler,.user_data = local_response_buffer,};esp_http_client_handle_t client = esp_http_client_init(&config);esp_err_t err = esp_http_client_perform(client);if (err == ESP_OK){ESP_LOGI(TAG, "HTTP GET Status = %d, content_length = %d",esp_http_client_get_status_code(client),(int)esp_http_client_get_content_length(client));gettime = false;}else{ESP_LOGI(TAG, "HTTP GET request failed: %s", esp_err_to_name(err));}ESP_LOGI(TAG, "%s\n", local_response_buffer);esp_http_client_cleanup(client);vTaskDelay(1000 / portTICK_PERIOD_MS);}while (1){vTaskDelay(1000 / portTICK_PERIOD_MS);}
}void app_main(void)
{ESP_ERROR_CHECK(nvs_flash_init());ESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());ESP_ERROR_CHECK(example_connect()); // 在menuconfig中wifi的账号密码xTaskCreate(&http_get_task, "http_get_task", 4096, NULL, 5, NULL);
}
4.已经获取到响应的数据

相关文章:
ESP32 http 请求
目录 参考教程1.使用的http连接2.使用Vscode-IDF创建http_request例程3.修改http_request_example_main.c函数4.已经获取到响应的数据 参考教程 ESP-IDF HTTP获取网络时间 1.使用的http连接 http://api.m.taobao.com/rest/api3.do?apimtop.common.getTimestamp请求可以得到…...
【C++】拷贝构造函数,析构函数详解!
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
qml ParticleSystem3D使用介绍
在 Qt Quick 3D 中,ParticleSystem3D 是用来创建和控制3D粒子系统的元素。粒子系统是图形编程中用于模拟液体、烟雾、火、星空等现象的技术,它通过生成大量小粒子来模拟这些效果。ParticleSystem3D 提供了一个框架,允许开发者定义粒子的各种属性,如生命周期、速度、颜色、大…...
集团投融资大数据平台解决方案
一、项目背景 项目为集团型公司大数据平台项目,整个项目周期约为6个月,整体呈现了对外的数据大屏驾驶仓和对内的看板报表,减少了客户内部数据上报和报表制作的重复工作量,为集团数据决策奠定基础。 二、项目目标 战略层ÿ…...
深信服技术认证“SCSA-S”划重点:渗透测试工具使用
为帮助大家更加系统化的学习网络安全知识,尽快通过深信服安全服务认证工程师认证,深信服推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师(…...
CCFCSP试题编号:201803-2试题名称:碰撞的小球
一、题目描述 二、思路 1.首先妾身分析这个题目,想要解题,得得解决2个问题。 1)判断小球到达端点或碰撞然后改变方向; 2)每时刻都要改变位置 两个问题都比较好解决,1)只要简单判断坐标&…...
《安富莱嵌入式周报》第327期:Cortex-A7所有外设单片机玩法LL/HAL库全面上线,分享三款GUI, PX5 RTOS推出网络协议栈,小米Vela开源
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 1、2023 Hackaday大赛胸牌开源 Vectorscope-main.zip (66.83MB) GitHub - Hack-a-Day/Vectorscope: Vectorscope badg…...
面试官:【js多维数组扁平化去重并排序】
文章目录 前言方法一方法二方法三方法四总结后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:JavaScript 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&a…...
C#编程题分享(3)
n的阶乘问题 输⼊整数n,输出n的阶乘。 int n Convert.ToInt32(Console.ReadLine()); int jiecheng 1; for (int i 1; i < n 1; i) {jiecheng * i; // 1 * 2 * 3 * .....} Console.WriteLine("{0}的阶乘是:{1}", n, jiecheng); q^n次…...
Redis下载和安装(Windows系统)
通过 GitHub 来下载 Windows 版 Redis 安装包,下载地址:点击前往。 打开上述的下载链接,Redis 支持 32 位和 64 位的 Window 系统,大家根据个人情况自行下载,如图 1 所示: 下载完成后,打开相应的文件夹&a…...
MySQL数据库:开源且强大的关系型数据库管理系统
大家好,我是咕噜-凯撒,数据在当今信息化时代的重要性不可忽视。作为企业和组织的重要资产,数据的管理和存储变得至关重要,MySQL作为一种关系型数据库管理系统,具有非常多的优势,下面简单的探讨一下MySQL数据…...
如何在AD的PCB板做矩形槽孔以及如何倒圆弧角
Altium Designer 22下载安装教程-CSDN博客 如何在AD上创建完整的项目-CSDN博客 开始前,请先安装后AD,并创建好项目。 目录 1. 如何在AD的PCB板做矩形槽孔 2. 如何在AD的PCB板倒圆弧角 1. 如何在AD的PCB板做矩形槽孔 首先,我们进入上面创…...
SpringMVC日志追踪笔记整理
新建logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><property name"PATH" value"./log/business"></property><appender name"STDOUT" class"ch.qos.logback…...
UML建模图文详解教程06——顺序图
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著 顺序图概述 顺序图(sequence diagram,也…...
睡前随笔记录
一个人从出生到长大,就像一部手机从新用到旧。手机里面积累了太多的缓存,积累了太多的照片,各种app的数据,安装了各式各样的程序。 所以大概这就是年纪越大,记性越差的原因吗?就像一个屋子,堆满…...
微服务学习|Feign:快速入门、自定义配置、性能优化、最佳实践
RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码 存在下面的问题 代码可读性差,编程体验不统一 参数复杂URL难以维护 Feign的介绍 Feign是一个声明式的http客户端,官方地址: https://github.com/OpenFeign/feign …...
使用【画图】软件修改图片像素、比例和大小
打开电脑画图软件,点击开始 windows附件 画图 在画图软件里选择需要调整的照片,点击文件 打开 在弹出窗口中选择照片后点击打开 照片在画图软件中打开后,对照片进行调整。按图中顺序进行 确定后照片会根据设定的值自动调整 保存…...
DevOps 事后分析
众所周知,系统的变化会带来不稳定,进而引发事故。迁移到 DevOps 使世界各地的组织能够以更小的增量和更高的频率进行发布。这降低了特定版本中失败的风险。另一方面,增加发布数量并不一定会减少待命团队需要响应的事件数量。 事件响应团队的…...
fastdfs-client-java-1.30 maven 打包安装
1. 进入源代码目录,打开cmd mvn clean install 或者 mvn package 问题不大的话会在同级目录target目录下生成打包后文件 2. 当前目录下cmd进行maven安装 mvn install:install-file -DgroupIdorg.csource -DartifactIdfastdfs-client-java -Dversion${version} -D…...
【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵
专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 本章将介绍视觉SLAM的基本问题之一:如何描述刚体在三维空间中的运动? 旋转矩阵 点、向量和坐标系 三维空间由3个轴组成&…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
