cURL是一個非常流行的命令行工具,可以用來發送HTTP請求。當我們需要使用C語言實現HTTP請求時,可以使用cURL庫。在這篇文章中,我將介紹如何使用cURL庫發送POST請求,并將JSON作為請求主體發送。
#include <curl/curl.h> #include <string.h> // 回調函數,當CURL獲取到數據時調用 size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { memcpy(userdata, ptr, size * nmemb); return size * nmemb; } int main() { // 初始化cURL。如果失敗,返回非0。 if (curl_global_init(CURL_GLOBAL_ALL)) { return 1; } CURL *curl = curl_easy_init(); if (curl) { // 設置URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/v1/data"); // 設置請求方法為POST curl_easy_setopt(curl, CURLOPT_POST, 1); // 設置請求主體 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\": \"example\", \"value\": 123}"); // 設置請求主體的類型為JSON struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // 設置回調函數,當獲取數據時調用write_callback char result[1024]; curl_easy_setopt(curl, CURLOPT_WRITEDATA, result); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); // 執行請求 CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("Failed to connect: %s\n", curl_easy_strerror(res)); } else { printf("Result: %s\n", result); } // 清理cURL curl_slist_free_all(headers); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }
以上代碼中,我們首先初始化了cURL庫,然后創建了一個CURL句柄curl。接下來,我們設置URL為http://example.com/api/v1/data,并將請求方法設置為POST。然后,我們將JSON字符串設置為請求主體,設置請求主體的類型為JSON,并指定了當獲取數據時調用的回調函數write_callback。最后,我們執行了請求,并輸出了結果。