diff --git a/components/esp_eth/test_apps/main/esp_eth_test_apps.c b/components/esp_eth/test_apps/main/esp_eth_test_apps.c index 9f855bfe77..4b1346659b 100644 --- a/components/esp_eth/test_apps/main/esp_eth_test_apps.c +++ b/components/esp_eth/test_apps/main/esp_eth_test_apps.c @@ -638,6 +638,8 @@ esp_err_t http_event_handle(esp_http_client_event_t *evt) case HTTP_EVENT_REDIRECT: ESP_LOGI(TAG, "HTTP_EVENT_REDIRECT"); break; + default: + break; } return ESP_OK; } diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index c59bd8a159..607a4375a6 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -236,6 +236,15 @@ static int http_on_url(http_parser *parser, const char *at, size_t length) static int http_on_status(http_parser *parser, const char *at, size_t length) { + esp_http_client_handle_t client = parser->data; + ESP_LOGD(TAG, "http_on_status"); + + /* Store the status code in the response structure */ + client->response->status_code = parser->status_code; + + http_dispatch_event(client, HTTP_EVENT_ON_STATUS_CODE, &client->response->status_code, sizeof(int)); + http_dispatch_event_to_event_loop(HTTP_EVENT_ON_STATUS_CODE, &client, sizeof(esp_http_client_handle_t)); + return 0; } diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 7568ac1240..abdd28ff79 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -40,6 +40,7 @@ typedef enum { and will be deprecated in future versions esp-idf */ HTTP_EVENT_ON_HEADER, /*!< Occurs when receiving each header sent from the server */ HTTP_EVENT_ON_HEADERS_COMPLETE, /*!< Occurs when all headers are received on the client side */ + HTTP_EVENT_ON_STATUS_CODE, /*!< Occurs when receiving the HTTP status code from the server */ HTTP_EVENT_ON_DATA, /*!< Occurs when receiving data from the server, possibly multiple portions of the packet */ HTTP_EVENT_ON_FINISH, /*!< Occurs when finish a HTTP session */ HTTP_EVENT_DISCONNECTED, /*!< The connection has been disconnected */ diff --git a/docs/en/api-reference/protocols/esp_http_client.rst b/docs/en/api-reference/protocols/esp_http_client.rst index 734b9fef04..870c508aa1 100644 --- a/docs/en/api-reference/protocols/esp_http_client.rst +++ b/docs/en/api-reference/protocols/esp_http_client.rst @@ -131,6 +131,7 @@ Expected data types for different HTTP Client events in the event loop are as fo - HTTP_EVENT_HEADERS_SENT : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_HEADER : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_HEADERS_COMPLETE: ``esp_http_client_handle_t`` + - HTTP_EVENT_ON_STATUS_CODE : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_DATA : ``esp_http_client_on_data_t`` - HTTP_EVENT_ON_FINISH : ``esp_http_client_handle_t`` - HTTP_EVENT_DISCONNECTED : ``esp_http_client_handle_t`` 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 b0cfb12634..e0db0f561b 100644 --- a/docs/zh_CN/api-reference/protocols/esp_http_client.rst +++ b/docs/zh_CN/api-reference/protocols/esp_http_client.rst @@ -131,6 +131,7 @@ ESP HTTP 客户端诊断信息 - HTTP_EVENT_HEADERS_SENT : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_HEADER : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_HEADERS_COMPLETE: ``esp_http_client_handle_t`` + - HTTP_EVENT_ON_STATUS_CODE : ``esp_http_client_handle_t`` - HTTP_EVENT_ON_DATA : ``esp_http_client_on_data_t`` - HTTP_EVENT_ON_FINISH : ``esp_http_client_handle_t`` - HTTP_EVENT_DISCONNECTED : ``esp_http_client_handle_t`` diff --git a/examples/protocols/dns_over_https/components/dns_over_https/dns_over_https.c b/examples/protocols/dns_over_https/components/dns_over_https/dns_over_https.c index 531be302e1..f98df9938e 100644 --- a/examples/protocols/dns_over_https/components/dns_over_https/dns_over_https.c +++ b/examples/protocols/dns_over_https/components/dns_over_https/dns_over_https.c @@ -117,6 +117,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_REDIRECT: ESP_LOGE(TAG, "HTTP_EVENT_REDIRECT: Not supported(%d)", esp_http_client_get_status_code(evt->client)); break; + default: + break; } return ESP_OK; } diff --git a/examples/protocols/esp_http_client/main/esp_http_client_example.c b/examples/protocols/esp_http_client/main/esp_http_client_example.c index 72b1aa847a..245df74ff0 100644 --- a/examples/protocols/esp_http_client/main/esp_http_client_example.c +++ b/examples/protocols/esp_http_client/main/esp_http_client_example.c @@ -139,6 +139,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) esp_http_client_set_header(evt->client, "Accept", "text/html"); esp_http_client_set_redirection(evt->client); break; + default: + break; } return ESP_OK; } diff --git a/examples/system/ota/partitions_ota/main/app_main.c b/examples/system/ota/partitions_ota/main/app_main.c index a174514bf7..3b38fd3982 100644 --- a/examples/system/ota/partitions_ota/main/app_main.c +++ b/examples/system/ota/partitions_ota/main/app_main.c @@ -87,6 +87,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_REDIRECT: ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT"); break; + default: + break; } return ESP_OK; } diff --git a/examples/system/ota/simple_ota_example/main/simple_ota_example.c b/examples/system/ota/simple_ota_example/main/simple_ota_example.c index 9804d8adec..e52bf713de 100644 --- a/examples/system/ota/simple_ota_example/main/simple_ota_example.c +++ b/examples/system/ota/simple_ota_example/main/simple_ota_example.c @@ -75,6 +75,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt) case HTTP_EVENT_REDIRECT: ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT"); break; + default: + break; } return ESP_OK; }