From 4f5dd3a020a181088187f8dd18de6512aa438153 Mon Sep 17 00:00:00 2001 From: Jim Date: Sat, 9 May 2026 17:22:49 +0800 Subject: [PATCH] feat(esp_http_client): Add API to support set event handler --- components/esp_http_client/esp_http_client.c | 9 +++++++++ components/esp_http_client/include/esp_http_client.h | 12 ++++++++++++ docs/en/api-reference/protocols/esp_http_client.rst | 2 ++ .../api-reference/protocols/esp_http_client.rst | 2 ++ 4 files changed, 25 insertions(+) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 364cc7fa50d..92aa9d20519 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -496,6 +496,15 @@ esp_err_t esp_http_client_set_user_data(esp_http_client_handle_t client, void *d return ESP_OK; } +esp_err_t esp_http_client_set_event_handler(esp_http_client_handle_t client, http_event_handle_cb event_handler) +{ + if (client == NULL) { + return ESP_ERR_INVALID_ARG; + } + client->event_handler = event_handler; + return ESP_OK; +} + static esp_err_t _set_config(esp_http_client_handle_t client, const esp_http_client_config_t *config) { esp_err_t ret = ESP_OK; diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index d63303c509a..c161dfcc791 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -526,6 +526,18 @@ esp_err_t esp_http_client_get_user_data(esp_http_client_handle_t client, void ** */ esp_err_t esp_http_client_set_user_data(esp_http_client_handle_t client, void *data); +/** + * @brief Set the event handler for the client + * + * @param[in] client The esp_http_client handle + * @param[in] event_handler The event handler + * + * @return + * - ESP_OK + * - ESP_ERR_INVALID_ARG + */ +esp_err_t esp_http_client_set_event_handler(esp_http_client_handle_t client, http_event_handle_cb event_handler); + /** * @brief Get HTTP client session errno * diff --git a/docs/en/api-reference/protocols/esp_http_client.rst b/docs/en/api-reference/protocols/esp_http_client.rst index f3a5e382467..1106d97b974 100644 --- a/docs/en/api-reference/protocols/esp_http_client.rst +++ b/docs/en/api-reference/protocols/esp_http_client.rst @@ -136,6 +136,8 @@ ESP HTTP Client supports event handling by triggering an event handler correspon To enable event handling, you just need to set a callback function using the :cpp:member:`esp_http_client_config_t::event_handler` member. +Also you can set a callback function after the client is initialized using the :cpp:func:`esp_http_client_set_event_handler` function. + ESP HTTP Client Diagnostic Information -------------------------------------- diff --git a/docs/zh_CN/api-reference/protocols/esp_http_client.rst b/docs/zh_CN/api-reference/protocols/esp_http_client.rst index 5b0ef356da3..fef3e664978 100644 --- a/docs/zh_CN/api-reference/protocols/esp_http_client.rst +++ b/docs/zh_CN/api-reference/protocols/esp_http_client.rst @@ -136,6 +136,8 @@ ESP HTTP 客户端支持事件处理,发生相关事件时会触发相应的 通过 :cpp:member:`esp_http_client_config_t::event_handler` 设置回调函数即可启用事件处理功能。 +也可以在客户端初始化后使用 :cpp:func:`esp_http_client_set_event_handler` 函数设置回调函数。 + ESP HTTP 客户端诊断信息 --------------------------