当前位置: 首页 > news >正文

稻香村网站建设网站建设功能需求

稻香村网站建设,网站建设功能需求,网站服务运营队伍与渠道建设,茶叶网站flash模板ESP-C3入门11. 创建最基本的HTTP请求一、menuconfig配置二、配置 CMakeLists1. 设置项目的额外组件目录2. 设置头文件搜索目录三、在 ESP32 上执行 HTTP 请求的基本步骤1. 创建 TCP 连接2. 设置 HTTP 请求3. 发送 HTTP 请求4. 接收 HTTP 响应5. 处理 HTTP 响应6. 关闭 TCP 连接… ESP-C3入门11. 创建最基本的HTTP请求一、menuconfig配置二、配置 CMakeLists1. 设置项目的额外组件目录2. 设置头文件搜索目录三、在 ESP32 上执行 HTTP 请求的基本步骤1. 创建 TCP 连接2. 设置 HTTP 请求3. 发送 HTTP 请求4. 接收 HTTP 响应5. 处理 HTTP 响应6. 关闭 TCP 连接三、示例1. http_request.h2. http_request.chttp_request_sendesp_http_client_config_t 结构体esp_http_client_init() 函数esp_http_client_perform() 函数esp_http_client_cleanup() 函数官网文档 https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/protocols/esp_http_client.html 一、menuconfig配置 打开ESP-IDF 4.4 CMD命令窗口进入项目运行 idf.py menuconfig打开配置窗口 选择 Component config- ESP HTTP client菜单 钩选 保存设置到自己项目 二、配置 CMakeLists 1. 设置项目的额外组件目录 # 设置项目的额外组件目录,允许使用ESP-IDF示例中的公共组件。 set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/components)2. 设置头文件搜索目录 CMakeLists.h 中要包含 esp_http_client的头文件位置 # 设置项目的包含目录这些是要搜索头文件的目录 set(INCLUDE_DIRS${INCLUDE_DIRS}${CMAKE_CURRENT_SOURCE_DIR}${IDF_PATH}/components/esp_http_client/include) include_directories(${INCLUDE_DIRS})这样就能使用 esp_http_client了。 三、在 ESP32 上执行 HTTP 请求的基本步骤 在 ESP32 上进行 HTTP 请求需要使用 TCP/IP 套接字和 HTTP 库来实现。 ESP32 IDF的esp_http_client 库提供了一组易于使用的 API可以自动处理 HTTP 头和响应内容。 1. 创建 TCP 连接 使用 tcpip_adapter 和 lwip 库创建一个 TCP 连接。可以使用 lwip 库提供的函数如 tcp_new() 和 tcp_connect()来创建和连接套接字。 2. 设置 HTTP 请求 使用 HTTP 协议创建一个请求消息。请求消息包括 HTTP 方法如 GET、POST 等和请求的 URL以及一些 HTTP 头部如 Content-Type、Content-Length 等和负载数据如果有的话。 3. 发送 HTTP 请求 使用 lwip 库提供的 tcp_write() 函数将请求消息发送到服务器。 4. 接收 HTTP 响应 使用 lwip 库提供的 tcp_recv() 函数从服务器接收响应消息。通常响应消息由一个或多个 TCP 数据包组成因此需要在接收数据时进行缓冲区处理。 5. 处理 HTTP 响应 对响应消息进行处理例如解析响应头、解码响应正文、处理错误码等。 6. 关闭 TCP 连接 使用 lwip 库提供的 tcp_close() 函数关闭 TCP 连接。 三、示例 1. http_request.h #ifndef HTTP_REQUEST_H #define HTTP_REQUEST_H #include esp_http_client.h #define HTTP_URL http://www.example.com esp_err_t http_event_handler(esp_http_client_event_t *evt); void request(const char* url); #endif 2. http_request.c #include esp_err.h #include esp_log.h #include network/include/http_request.hstatic const char *TAG HTTP_REQUEST; #define MAX_HTTP_OUTPUT_BUFFER 2048// HTTP 请求的处理函数 esp_err_t http_event_handler(esp_http_client_event_t *evt) {// 缓存http响应的bufferstatic char *output_buffer;// 已经读取的字节数static int output_len;switch(evt-event_id) {case HTTP_EVENT_ERROR:ESP_LOGD(TAG, HTTP_EVENT_ERROR);break;case HTTP_EVENT_ON_CONNECTED:ESP_LOGD(TAG, HTTP_EVENT_ON_CONNECTED);break;case HTTP_EVENT_HEADER_SENT:ESP_LOGD(TAG, HTTP_EVENT_HEADER_SENT);break;case HTTP_EVENT_ON_HEADER:ESP_LOGD(TAG, HTTP_EVENT_ON_HEADER, key%s, value%s, evt-header_key, evt-header_value);break;case HTTP_EVENT_ON_DATA:ESP_LOGD(TAG, HTTP_EVENT_ON_DATA, len%d, evt-data_len);if (!esp_http_client_is_chunked_response(evt-client)) {// 如果配置了user_data buffer则把响应复制到该buffer中if (evt-user_data) {memcpy(evt-user_data output_len, evt-data, evt-data_len);} else {if (output_buffer NULL) {output_buffer (char *) malloc(esp_http_client_get_content_length(evt-client));output_len 0;if (output_buffer NULL) {ESP_LOGE(TAG, Failed to allocate memory for output buffer);return ESP_FAIL;}}memcpy(output_buffer output_len, evt-data, evt-data_len);}output_len evt-data_len;}break;case HTTP_EVENT_ON_FINISH:ESP_LOGD(TAG, HTTP_EVENT_ON_FINISH);if (output_buffer ! NULL) {// Response is accumulated in output_buffer. Uncomment the below line to print the accumulated response// ESP_LOG_BUFFER_HEX(TAG, output_buffer, output_len);free(output_buffer);output_buffer NULL;}output_len 0;break;case HTTP_EVENT_DISCONNECTED:ESP_LOGI(TAG, HTTP_EVENT_DISCONNECTED);if (output_buffer ! NULL) {free(output_buffer);output_buffer NULL;}output_len 0;break;}return ESP_OK; }void request(const char *url) {// 响应结果放在这里char local_response_buffer[MAX_HTTP_OUTPUT_BUFFER] {0};// 创建一个 HTTP 客户端配置esp_http_client_config_t config {.method HTTP_METHOD_GET,.url url,.event_handler http_event_handler,.user_data local_response_buffer,.disable_auto_redirect true,};// 创建一个 HTTP 客户端并执行 GET 请求esp_http_client_handle_t client esp_http_client_init(config);esp_err_t err esp_http_client_perform(client);// 检查请求是否成功if (err ESP_OK) {int len esp_http_client_get_content_length(client);ESP_LOGI(TAG, Status %d, content_length %d,esp_http_client_get_status_code(client),//状态码len);//数据长度} else {printf(HTTP GET request failed: %s\n, esp_err_to_name(err));}printf(Response: %.*s\n, strlen(local_response_buffer), local_response_buffer);//断开并释放资源esp_http_client_cleanup(client); }主要函数说明 http_request_send 用于发送 HTTP 请求的函数 该函数接受一个 http_request_t 类型的指针作为参数其中包含了 HTTP 请求的 URL、请求方法、请求头以及 POST 数据。在 esp_http_client_config_t 结构体 用于配置 HTTP 客户端的参数包括 URL、请求方法和事件处理函数。然后根据请求中是否包含请求头和 POST 数据来设置 HTTP 客户端的相应参数。 esp_http_client_init() 函数 用来创建一个 HTTP 客户端句柄。 esp_http_client_perform() 函数 发送 HTTP 请求。 esp_http_client_cleanup() 函数 释放 HTTP 客户端句柄。
http://www.hkea.cn/news/14450063/

相关文章:

  • 信息部网站建设工作计划怎样用jsp做网站登录
  • 内衣网站建设推广用闲置的安卓手机做网站服务器
  • 淄博百度网站深圳网站建设智能 乐云践新
  • 一个网站空间可以做多少个网站单品网站模板
  • 网站的建设与维护步骤佛山营销型网页设计
  • 郑州公司网站2014苏州建设银行招聘网站
  • 哪些网站可以做招商广告酷家乐网站做墙裙教程
  • asp 网站模板如何选择邯郸做网站
  • 做科普网站网站租用服务器多少钱
  • 网站模板后台ui设计培训机构好
  • 搭建网站用什么软件免费空间申请哪个好
  • 自己做一个网站难么加盟投资好项目
  • 冯提莫斗鱼前在哪个网站做直播石家庄正定新区建设局网站
  • 中国工商做年报网站专做男装的网站
  • dns上国外网站wordpress 在线skype
  • 网站建设步骤大全新东方烹饪学校
  • 海南省住房和城乡建设官方网站关键词优化多少钱
  • 池州最好的网站建设电子商务主要就业方向
  • 美食网站黑米如何做学习网页制作的网站
  • 高质量的丹阳网站建设代理网址在线
  • 网站代码语法在线玩游戏
  • 站长工具怎么关掉网页托管服务是什么
  • angular2.0网站制作免费又好用的wordpress模板
  • 营销型网站的类型有哪些织梦网站制作费用
  • 网站的系统帮助桥东企业做网站
  • 专业教学资源库网站建设工作公司官网介绍
  • 网站专做盗版小说 会犯法吗给个网站能用的2022
  • 建立公司企业网站租网络服务器多少钱
  • 网站系统的设计与实现263云通信企业邮箱
  • 网站如何在手机上显示wordpress固态链接