]> granicus.if.org Git - esp-idf/commitdiff
esp_http_client: add head method support
authorJason Kölker <jason@koelker.net>
Sat, 23 Jun 2018 18:31:09 +0000 (18:31 +0000)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 31 Jul 2018 08:08:31 +0000 (11:08 +0300)
Merges https://github.com/espressif/esp-idf/pull/2093

components/esp_http_client/esp_http_client.c
components/esp_http_client/include/esp_http_client.h
examples/protocols/esp_http_client/esp_http_client_test.py
examples/protocols/esp_http_client/main/esp_http_client_example.c

index f504ba1d211114aebf84a4d69c910929ff67b2e7..0476026a14c919b1ded895664d423c103ee15ccb 100644 (file)
@@ -130,7 +130,8 @@ static const char *HTTP_METHOD_MAPPING[] = {
     "POST",
     "PUT",
     "PATCH",
-    "DELETE"
+    "DELETE",
+    "HEAD"
 };
 
 /**
@@ -695,6 +696,11 @@ static int esp_http_client_get_data(esp_http_client_handle_t client)
     if (client->state < HTTP_STATE_RES_COMPLETE_HEADER) {
         return ESP_FAIL;
     }
+
+    if (client->connection_info.method == HTTP_METHOD_HEAD) {
+        return 0;
+    }
+
     esp_http_buffer_t *res_buffer = client->response->buffer;
 
     ESP_LOGD(TAG, "data_process=%d, content_length=%d", client->response->data_process, client->response->content_length);
index b47f9263ad178a6aca3f0b4ad367d44ca728717d..2ad756a157580edffe992091926e08ceda66991e 100644 (file)
@@ -76,6 +76,7 @@ typedef enum {
     HTTP_METHOD_PUT,        /*!< HTTP PUT Method */
     HTTP_METHOD_PATCH,      /*!< HTTP PATCH Method */
     HTTP_METHOD_DELETE,     /*!< HTTP DELETE Method */
+    HTTP_METHOD_HEAD,       /*!< HTTP HEAD Method */
     HTTP_METHOD_MAX,
 } esp_http_client_method_t;
 
index 9ca1d6f09103869792461ec57883c664f7ba8f99..063510a80542ada09c11161dc717b4dfe6a65d61 100644 (file)
@@ -35,6 +35,7 @@ def test_examples_protocol_esp_http_client(env, extra_data):
     dut1.expect(re.compile(r"HTTP PUT Status = 200, content_length = (\d)"))
     dut1.expect(re.compile(r"HTTP PATCH Status = 200, content_length = (\d)"))
     dut1.expect(re.compile(r"HTTP DELETE Status = 200, content_length = (\d)"))
+    dut1.expect(re.compile(r"HTTP HEAD Status = 200, content_length = (\d)"))
     dut1.expect(re.compile(r"HTTP Basic Auth Status = 200, content_length = (\d)"))
     dut1.expect(re.compile(r"HTTP Basic Auth redirect Status = 200, content_length = (\d)"))
     dut1.expect(re.compile(r"HTTP Digest Auth Status = 200, content_length = (\d)"))
index 4a489080b9190a62197816f0a9bcc4066c5ce8fc..c0f1e64c23bcebcb08855995ab25c3bf40176826 100644 (file)
@@ -136,6 +136,18 @@ static void http_rest()
         ESP_LOGE(TAG, "HTTP DELETE request failed: %s", esp_err_to_name(err));
     }
 
+    //HEAD
+    esp_http_client_set_url(client, "http://httpbin.org/get");
+    esp_http_client_set_method(client, HTTP_METHOD_HEAD);
+    err = esp_http_client_perform(client);
+    if (err == ESP_OK) {
+        ESP_LOGI(TAG, "HTTP HEAD Status = %d, content_length = %d",
+                esp_http_client_get_status_code(client),
+                esp_http_client_get_content_length(client));
+    } else {
+        ESP_LOGE(TAG, "HTTP HEAD request failed: %s", esp_err_to_name(err));
+    }
+
     esp_http_client_cleanup(client);
 }