在使用C語言的POST方法時,我們往往需要傳遞多個參數的JSON數據。這種情況下,我們可以通過以下的代碼實現:
#include#include #include #include #include typedef struct { char *data; size_t length; } buffer_t; size_t write_buffer (void *ptr, size_t size, size_t nmemb, void *stream) { buffer_t *buffer = (buffer_t*) stream; size_t block = size * nmemb; buffer->data = realloc(buffer->data, buffer->length + block + 1); if (buffer->data == NULL) { printf ("ERROR: Out of memory\n"); exit (1); } memcpy(&(buffer->data[buffer->length]), ptr, block); buffer->length += block; buffer->data[buffer->length] = '\0'; return block; } int main (void) { CURL *curl; CURLcode res; buffer_t buffer = { NULL, 0 }; curl_global_init (CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { cJSON *json = cJSON_CreateObject (); cJSON_AddStringToObject (json, "name", "Tom"); cJSON_AddStringToObject (json, "age", "18"); char *json_string = cJSON_PrintUnformatted (json); curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string); cJSON_Delete (json); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buffer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&buffer); res = curl_easy_perform(curl); printf ("%s\n", buffer.data); free(buffer.data); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }
在這段代碼中,我們通過CURL庫向服務器發送HTTP請求,并使用cJSON庫創建了一個JSON對象。
這里要注意的是,我們通過cJSON_AddStringToObject函數來添加JSON字段。我們可以在其中指定字段名和字段值。
然后我們使用cJSON_PrintUnformatted函數來格式化JSON數據并將其轉換為字符串,該字符串可以作為POST請求中的參數。
最后,我們通過curl_easy_setopt設置POST請求中的參數和回調函數,最后使用curl_easy_perform函數來發送請求。
這里我們使用了write_buffer函數來回調寫入服務器響應的數據到緩沖區中,最后我們從緩沖區中獲取了服務器響應的數據。
上述代碼可以在C語言中POST多個參數的JSON數據,并獲取服務器的響應數據以供解析和處理。
上一篇vue input事件
下一篇vue 2.0 文檔