在C語言中,使用header傳遞JSON是一種非常常見的做法。通過設置HTTP請求的header部分,我們可以把JSON數(shù)據(jù)傳遞給服務器或者從服務器獲取JSON數(shù)據(jù)。
#include#include static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { ((char*)userdata)[0] = '\0'; strncat(userdata, ptr, size * nmemb); return size * nmemb; } int main() { CURL *curl; CURLcode res; struct curl_slist *headers = NULL; char *json = "{\"msg\":\"Hello world!\"}"; char buffer[4096] = ""; curl_global_init(CURL_GLOBAL_DEFAULT); headers = curl_slist_append(headers, "Expect:"); headers = curl_slist_append(headers, "Content-Type: application/json"); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:80"); //設置URL地址 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); //設置JSON數(shù)據(jù) curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); //設置HTTP header curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); //設置寫入數(shù)據(jù)的回調函數(shù) curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer); //設置回調函數(shù)的userdata參數(shù) 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); printf("%s\n", buffer); } curl_global_cleanup(); return 0; }
在上面的代碼中,我們首先初始化CURL庫,然后設置HTTP請求的header部分。在本例中,我們將Content-Type設置為application/json,以表明我們要傳遞的是JSON數(shù)據(jù)。
接下來,我們設置一些其他選項,例如URL地址、要傳遞的JSON數(shù)據(jù)、寫入數(shù)據(jù)的回調函數(shù)等等。
最后,我們使用curl_easy_perform()函數(shù)來發(fā)送HTTP請求,然后使用回調函數(shù)來處理服務器返回的數(shù)據(jù)。
總的來說,使用header傳遞JSON是一種很方便的做法,可以方便地在C語言中與服務器進行數(shù)據(jù)交互。
上一篇c 使用json
下一篇el表達式獲取json