C語言是一門廣泛應用于網絡編程的語言。獲取網絡JSON數據也是C語言網絡開發中很常見的任務。下面我們來看一下具體的實現方法。
#include#include #include #include typedef struct { char* data; size_t size; }memory_struct; static size_t write_callback_func(void* ptr, size_t size, size_t nmemb, void* data) { size_t realsize = size * nmemb; memory_struct* mem = (memory_struct*)data; mem->data = (char*)realloc(mem->data, mem->size + realsize + 1); if (mem->data == NULL) { printf("not enough memory\n"); return 0; } memcpy(&(mem->data[mem->size]), ptr, realsize); mem->size += realsize; mem->data[mem->size] = 0; return realsize; } char* get_json_data(char* url) { CURL* curl = curl_easy_init(); if (!curl) { printf("init curl failed\n"); return NULL; } memory_struct chunk = {0}; curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_func); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl"); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("curl_easy_perform error\n"); return NULL; } curl_easy_cleanup(curl); return chunk.data; } int main() { char* url = "http://example.com/example.json"; char* data = get_json_data(url); if (data == NULL) { printf("get json data failed\n"); return 1; } printf("%s\n", data); free(data); return 0; }
上面的代碼使用了libcurl庫,這個庫非常方便地實現了HTTP請求和響應的處理。我們只需要設置相應的參數,就能夠輕松地發送HTTP請求并得到服務器響應的結果。
其中,get_json_data函數是我們實現的網絡請求函數。它接受一個URL作為參數,發送HTTP請求并得到這個URL對應的JSON數據。write_callback_func函數則是用來處理服務器響應的回調函數。
最后,我們在main函數中調用get_json_data函數獲取JSON數據,并打印出來。這里的URL地址應該替換成實際的JSON數據源地址。
上一篇vue 長按復制內容
下一篇vue3配置