From a6bb6f39628102b94edc381724c2f092e918ef17 Mon Sep 17 00:00:00 2001 From: Sam Chen Date: Mon, 5 Jul 2021 19:00:59 +0800 Subject: [PATCH] Client - fixed http client on esp32 --- src/client/network/http_esp32.c | 49 ++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/src/client/network/http_esp32.c b/src/client/network/http_esp32.c index 895603c6..6acc46cb 100644 --- a/src/client/network/http_esp32.c +++ b/src/client/network/http_esp32.c @@ -75,6 +75,11 @@ static void init_config(esp_http_client_config_t* esp, http_client_config_t cons esp->cert_pem = conf->cert_pem; esp->timeout_ms = HTTP_TIMEPUT_MS; esp->event_handler = http_event_handler; + if (conf->use_tls) { + esp->transport_type = HTTP_TRANSPORT_OVER_SSL; + } else { + esp->transport_type = HTTP_TRANSPORT_OVER_TCP; + } } void http_client_init() {} @@ -89,17 +94,22 @@ int http_client_post(http_client_config_t const* const config, byte_buf_t const* esp_client_conf.user_data = (void*)response; esp_http_client_handle_t client = esp_http_client_init(&esp_client_conf); - esp_http_client_set_method(client, HTTP_METHOD_POST); - esp_http_client_set_header(client, "Content-Type", "application/json"); - esp_http_client_set_post_field(client, (char const*)request->data, request->len); - - esp_err_t err = esp_http_client_perform(client); - if (err != ESP_OK) { - ESP_LOGE(TAG, "HTTP POST request failed: %s", esp_err_to_name(err)); + if (client) { + esp_http_client_set_method(client, HTTP_METHOD_POST); + esp_http_client_set_header(client, "Content-Type", "application/json"); + esp_http_client_set_post_field(client, (char const*)request->data, request->len); + + esp_err_t err = esp_http_client_perform(client); + if (err != ESP_OK) { + ESP_LOGE(TAG, "HTTP POST request failed: %s", esp_err_to_name(err)); + ret = -1; + } + *status = esp_http_client_get_status_code(client); + esp_http_client_cleanup(client); + } else { + ESP_LOGE(TAG, "http client init failed"); ret = -1; } - *status = esp_http_client_get_status_code(client); - esp_http_client_cleanup(client); return ret; } @@ -110,14 +120,21 @@ int http_client_get(http_client_config_t const* const config, byte_buf_t* const esp_client_conf.user_data = (void*)response; esp_http_client_handle_t client = esp_http_client_init(&esp_client_conf); - - esp_err_t err = esp_http_client_perform(client); - if (err != ESP_OK) { - ESP_LOGE(TAG, "HTTP GET request failed: %s", esp_err_to_name(err)); + if (client) { + esp_http_client_set_method(client, HTTP_METHOD_GET); + esp_http_client_set_header(client, "Content-Type", "application/json"); + esp_err_t err = esp_http_client_perform(client); + if (err != ESP_OK) { + ESP_LOGE(TAG, "HTTP GET request failed: %s", esp_err_to_name(err)); + ret = -1; + } + + *status = esp_http_client_get_status_code(client); + esp_http_client_cleanup(client); + + } else { + ESP_LOGE(TAG, "http client init failed"); ret = -1; } - - *status = esp_http_client_get_status_code(client); - esp_http_client_cleanup(client); return ret; }