diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 91d344e05..d1283aebe 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -589,6 +589,17 @@ esp_err_t esp_http_client_cleanup(esp_http_client_handle_t client) return ESP_OK; } +esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client) +{ + if (client == NULL) { + return ESP_ERR_INVALID_ARG; + } + if (client->location == NULL) { + return ESP_ERR_INVALID_ARG; + } + return esp_http_client_set_url(client, client->location); +} + static esp_err_t esp_http_check_response(esp_http_client_handle_t client) { char *auth_header = NULL; diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 160d16fa5..18b68b883 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -376,6 +376,18 @@ esp_err_t esp_http_client_cleanup(esp_http_client_handle_t client); */ esp_http_client_transport_t esp_http_client_get_transport_type(esp_http_client_handle_t client); +/** + * @brief Set redirection URL. + * When received the 30x code from the server, the client stores the redirect URL provided by the server. + * This function will set the current URL to redirect to enable client to execute the redirection request. + * + * @param[in] client The esp_http_client handle + * + * @return + * - ESP_OK + * - ESP_FAIL + */ +esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client); #ifdef __cplusplus }