C語言是一種常用的編程語言,可以用來進行各種各樣的開發工作。HTTP GET是進行網絡訪問的一種方式,而JSON是一種輕量級的數據交換格式。在C語言中,可以使用HTTP GET訪問JSON數據,這種方式廣泛應用于各類Web API的調用以及一些數據交互操作中。
#include#include #include #include int main() { CURL *http_handle; CURLcode http_res; char *url = "http://example.com/api/data.json"; char *http_data = NULL; http_handle = curl_easy_init(); if (http_handle == NULL) { printf("Init HTTP handle failed!\n"); return -1; } curl_easy_setopt(http_handle, CURLOPT_URL, url); curl_easy_setopt(http_handle, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(http_handle, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(http_handle, CURLOPT_WRITEDATA, &http_data); http_res = curl_easy_perform(http_handle); if (http_res != CURLE_OK) { printf("CURL error: %s\n", curl_easy_strerror(http_res)); curl_easy_cleanup(http_handle); return -1; } curl_easy_cleanup(http_handle); printf("HTTP response data: %s\n", http_data); if (http_data != NULL) { free(http_data); http_data = NULL; } return 0; } static size_t write_callback(char *data, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; char **pstr = (char **)userp; *pstr = realloc(*pstr, strlen(*pstr) + realsize + 1); if (*pstr == NULL) { printf("Memory allocation error!\n"); return 0; } strncat(*pstr, data, realsize); return realsize; }
在上面的代碼中,我們使用了libcurl庫來完成HTTP GET請求的發送與接收。首先,我們調用curl_easy_init()來初始化一個新的CURL句柄,并設置一些參數。其中,CURLOPT_URL選項指定了待訪問的API地址,CURLOPT_FOLLOWLOCATION選項告訴curl庫要自動跟蹤重定向,CURLOPT_WRITEFUNCTION選項指定了一個回調函數來接收HTTP響應數據,并把接收到的數據保存在一個字符串中。
接著,我們調用curl_easy_perform()來執行HTTP GET請求,并檢查返回值是否為CURLE_OK。如果HTTP請求成功,我們將得到一個包含JSON數據的字符串。最后,我們清理CURL句柄,并使用free()釋放動態內存。
總之,C語言中的HTTP GET訪問JSON數據是一個非常常見的任務。通過使用libcurl庫,我們可以很容易地實現這個目標。