隨著互聯網技術的發展,Web API日漸成為了現代軟件開發中必不可少的一部分。
在C語言中,我們也可以通過調用Web API實現很多實用的功能。其中,調用JSON數據庫就是一個常見的例子。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<curl/curl.h> struct memory{ char *memory; size_t size; }; static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; struct memory *mem = (struct memory*)userp; mem->memory = realloc(mem->memory, mem->size + realsize + 1); if(mem->memory == NULL) { /* out of memory! */ printf("out of memory!\n"); return 0; } memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; return realsize; } int main() { CURL *curl; CURLcode res; struct memory chunk; chunk.memory = malloc(1); chunk.size = 0; curl = curl_easy_init(); if(curl) { char *url = "https://www.example.com/api/getdata?format=json"; curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); res = curl_easy_perform(curl); if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); return EXIT_FAILURE; } printf("%lu bytes retrieved\n", (long)chunk.size); printf("JSON data:\n%s\n", chunk.memory); curl_easy_cleanup(curl); free(chunk.memory); } return EXIT_SUCCESS; }
上述代碼利用了第三方庫CURL來實現HTTP請求,以獲取指定URL返回的JSON數據。讀取返回數據的過程在write_callback函數中實現,通過realloc調整內存大小并使用memcpy拷貝返回數據到內存中。
最后,我們可以在控制臺中輸出獲取的JSON數據,供后續的解析和處理使用。