在C語(yǔ)言中發(fā)起HTTP請(qǐng)求并獲取返回的JSON數(shù)據(jù)是一個(gè)必備的技能。本文將介紹如何使用C語(yǔ)言發(fā)起HTTP請(qǐng)求并獲取JSON數(shù)據(jù)。
#include <stdio.h> #include <stdlib.h> #include <curl/curl.h> int main(int argc, char* argv[]) { CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl); } return 0; } static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { return fwrite(ptr, size, nmemb, stdout); }
以上代碼是一個(gè)C語(yǔ)言發(fā)起HTTP請(qǐng)求并獲取返回?cái)?shù)據(jù)的示例。首先需要包含CURL庫(kù),然后使用curl_easy_init()初始化,接著使用curl_easy_setopt()設(shè)置請(qǐng)求的URL、是否跟隨重定向、是否驗(yàn)證SSL證書以及回調(diào)函數(shù)等選項(xiàng)。最后使用curl_easy_perform()發(fā)起請(qǐng)求,如果返回值是CURLE_OK則表示請(qǐng)求成功,否則將會(huì)輸出錯(cuò)誤信息。最后使用curl_easy_cleanup()釋放內(nèi)存。
回調(diào)函數(shù)使用write_callback(),該函數(shù)將數(shù)據(jù)寫入標(biāo)準(zhǔn)輸出,也可以寫入文件等其他位置。在write_callback()內(nèi)部使用fwrite()函數(shù)寫入數(shù)據(jù)。
對(duì)于JSON數(shù)據(jù)的處理,可以使用第三方JSON解析庫(kù),如Jansson、cJSON等。在此不再贅述。