在使用C語言編寫網絡應用程序時,我們經常需要發送HTTP請求,并接收JSON格式的數據響應。C語言提供了cURL庫來實現這一過程。
在使用cURL庫時,我們首先需要初始化一個cURL句柄,設置請求頭和請求URL,然后執行請求,最后讀取響應數據。
CURL *curl; CURLcode res; char *url = "http://example.com/api/data"; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, "Content-Type: application/json"); res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { char *response_data; long response_code; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &response_size); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_response_data); res = curl_easy_perform(curl); if (res == CURLE_OK) { printf("Response code: %ld\n", response_code); printf("Response data: %s\n", response_data); } } curl_easy_cleanup(curl); }
上述代碼演示了如何使用cURL庫向指定URL發送請求,并讀取JSON類型的響應,請注意設置Content-Type為application/json。
讀取響應數據的write_response_data函數可以參考以下實現:
size_t write_response_data(void *buffer, size_t size, size_t nmemb, void *userp) { size_t total_size = size * nmemb; char **response_data = (char **) userp; *response_data = realloc(*response_data, total_size + 1); if (*response_data == NULL) { fprintf(stderr, "Failed to allocate memory.\n"); return 0; } memcpy(*response_data, buffer, total_size); (*response_data)[total_size] = '\0'; return total_size; }
在讀取響應數據時,我們需要使用malloc函數為響應數據分配內存,并在請求執行完畢后使用free函數釋放內存。
使用cURL庫發送HTTP請求和讀取響應數據非常方便,可以極大地簡化我們開發網絡應用程序的過程。
上一篇python 獲取子文件
下一篇vue圖片不清晰