在C語言中模擬POST提交JSON數據類型可以使用libcurl庫,該庫是一個非常流行的網絡傳輸庫。需要注意的是,使用該庫需要先安裝libcurl庫。
首先,我們需要引入curl.h頭文件:
#include <curl/curl.h>
接下來,我們需要對JSON數據進行封裝,將其轉換為字符串形式。使用第三方庫cJSON可以方便地完成這一步驟。該庫可以將C語言數據類型轉換為JSON格式。
cJSON *root = cJSON_CreateObject(); //創建JSON對象 cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20); char *json = cJSON_PrintUnformatted(root); //轉換為JSON字符串
然后,我們需要設置curl對象的屬性。具體來說,需要設置請求的URL、請求方法、請求頭信息和請求體信息等。
CURL *curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/api/user"); curl_easy_setopt(curl, CURLOPT_POST, 1L); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); }
最后,我們只需要執行curl操作并釋放資源即可。
CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl);
完整的代碼如下所示:
#include <curl/curl.h> #include <cJSON.h> int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20); char *json = cJSON_PrintUnformatted(root); cJSON_Delete(root); CURL *curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/api/user"); curl_easy_setopt(curl, CURLOPT_POST, 1L); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl); curl_slist_free_all(headers); } free(json); return 0; }