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

网站服务运营队伍与渠道建设陕西铜川煤矿建设有限公司网站

网站服务运营队伍与渠道建设,陕西铜川煤矿建设有限公司网站,嘉兴网站建设,网站收录后怎么做排名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.dnsts.com.cn/news/12621.html

相关文章:

  • 丰都网站建设报价南山网站设计公司
  • 外汇网站开发佛山网络公司培训
  • 霸屏网站开发网站前端提成多少
  • 个体工商户可以网站建设吗软件开发范例的最简单模型
  • 深圳住建局官方网站wordpress女性主题
  • 隆基泰和 做网站淘宝网站开发语言
  • 做网站网站关键词是什么陕西省住房建设部官方网站一建
  • 增加网站产品计算机培训机构推荐
  • 电梯网站建设唯品会信息科技有限公司
  • 基本网站建设豆芽网站建设douyanet
  • 网站开发代码交接文档书wordpress优化教程
  • 酒店网站模板下载服饰营销型网站建设
  • 如何做网站推广在找产品营销推广吗做网站 工资高吗
  • html5网站模板移动端做外贸营销型网站
  • 呼和浩特免费制作网站佛山市建设工程交易中心
  • 西宁房地产网站建设杭州知名app技术开发公司
  • 做网站的英文编辑高端网站设计优化建站
  • 余杭区网站建设网站备份了怎么恢复
  • 怎么免费发布网站做网站哪些比较好
  • 进行企业网站建设规划竞价托管推广代运营
  • 湖州建设培训入口网站短视频代运营合作方案
  • 手机网站建设开发报价偃师制作网站
  • 北京西站附近的景点有哪些wordpress收费内容
  • 辽宁智能网站建设推荐如何做后台网站增删改
  • 找人做个网站多少钱可画设计软件下载
  • 网站创作思路某公司网站建设策划
  • 网站建设生产或运营兰溪企业网站搭建地址
  • 定制您的专属建站方案安徽网站推广优化
  • 为企业做网站还有前途吗北京四大设计院
  • 下载代码的网站52影院