在 C 語言中,發送 POST 請求并攜帶 JSON 數據需要借助 libcurl 庫。libcurl 是一個可重入的,開源的客戶端 URL 傳輸庫,可以支持多種網絡協議,例如 HTTP、HTTPS、FTP 等。
要使用 libcurl 發送 POST 請求,我們需要以下步驟:
- 初始化 libcurl。
- 設置 HTTP 請求頭信息,包括 Content-Type 和 Content-Length。
- 設置 HTTP 請求體,即 JSON 數據。
- 發送 HTTP 請求。
- 接收 HTTP 響應,可以分塊接收。
- 清理 libcurl 環境。
下面是一個簡單的 C 語言程序,演示如何使用 libcurl 發送 POST 請求并攜帶 JSON 數據。
#include#include int main(void) { CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); const char *data = "{\"name\": \"Alice\", \"age\": 25}"; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_slist_free_all(headers); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }
在這個例子中,我們使用了 curl_slist_append() 函數設置了 Content-Type 請求頭,它指定了請求體的類型為 application/json。同理,我們也可以通過設置 Accept 請求頭來指定響應體的類型。
接下來,我們通過 curl_easy_setopt() 函數設置了請求體的內容,并通過 CURLOPT_URL 選項設置了請求地址。
最后,我們調用 curl_easy_perform() 函數執行 HTTP 請求,并根據返回值判斷請求是否成功。如果請求失敗,我們使用 fprintf() 函數輸出錯誤信息。
這樣,我們就成功使用 C 語言發送了 POST 請求并攜帶 JSON 數據。
上一篇python 統計列數量
下一篇c 取多層json數據