在網絡請求中,GET請求是一種常用的方式,常用于獲取服務器中的數據。而C語言中,我們可以使用cJSON庫來進行GET請求的處理。
示例1: cJSON *httpGET(const char *URL){ CURL *curl = curl_easy_init(); if(curl){ char *response_str = NULL; cJSON *response_json = NULL; CURLcode res; curl_easy_setopt(curl, CURLOPT_URL, URL); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_str); res = curl_easy_perform(curl); if(res != CURLE_OK){ fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); return NULL; } response_json = cJSON_Parse(response_str); curl_easy_cleanup(curl); free(response_str); if(response_json){ return response_json; } } return NULL; }
上述示例代碼中,我們使用cURL庫中的curl_easy_init()函數創建一個CURL實例,并設置了請求的URL以及響應回調函數writeCallback。在回調函數中,我們將響應字符串存儲到了response_str中,并通過cJSON_Parse()函數將其轉換成JSON對象。
我們可以使用如下代碼調用上述函數:
示例2: int main(){ cJSON *json = httpGET("http://example.com/api/data"); if(json){ printf("GET Result:\n%s\n", cJSON_Print(json)); cJSON_Delete(json); } return 0; }
在示例2中,我們首先調用了示例1中實現的httpGET()函數,獲取了JSON對象json。然后,我們使用cJSON_Print()函數將JSON對象轉換成字符串,并輸出到控制臺中。最后,我們通過cJSON_Delete()函數釋放了json對象,避免內存泄漏。
總之,使用cJSON庫進行GET請求非常簡單,我們只需要設置請求URL和響應回調函數即可。通過cJSON_Parse()函數,我們可以將響應字符串轉換成JSON對象,方便后續處理。