在C語言中調用接口服務是非常常見的操作,特別是調用JSON GET接口,在這里,我們將演示如何使用C語言調用JSON GET接口。
#include#include #include //引入curl庫 #include //引入cjson庫 typedef struct { char* memory; size_t size; } MemoryStruct; static size_t WriteMemoryCallback(void* contents, size_t size, size_t nmemb, void* userp) //寫入內存回調函數 { size_t realsize = size * nmemb; MemoryStruct* mem = (MemoryStruct*)userp; char* ptr = realloc(mem->memory, mem->size + realsize + 1); if (ptr == NULL) { /* out of memory! */ printf("realloc failed\n"); return 0; } mem->memory = ptr; memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; return realsize; } int main(int argc, char const* argv[]) { CURL* curl; CURLcode res; curl_global_init(CURL_GLOBAL_DEFAULT); //初始化curl全局變量 curl = curl_easy_init(); //初始化curl句柄 if (curl) { MemoryStruct chunk; chunk.memory = malloc(1); //設置內存存儲區 chunk.size = 0; char url[] = "https://jsonplaceholder.typicode.com/todos/1"; //設置發起GET請求的url curl_easy_setopt(curl, CURLOPT_URL, url); //設置url curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); //設置寫入內存回調函數 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)); } else { printf("%s", chunk.memory); //請求成功,打印返回結果 } free(chunk.memory); //釋放內存 curl_easy_cleanup(curl); //釋放curl句柄 } curl_global_cleanup(); //釋放全局變量 return 0; }
在這個例子中,我們使用了curl庫來發起GET請求,并使用cjson庫來處理返回的json數據。其中,WriteMemoryCallback函數是我們設置的回調函數,用來處理請求的返回結果,并將結果寫入內存。最后,我們打印內存中存儲的返回結果。