色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

curl獲取json c

錢淋西1年前10瀏覽0評論

curl是一個廣泛用于向服務器發(fā)送請求和接收響應的命令行工具。在C語言中,我們可以通過使用libcurl庫來實現對服務器的請求和響應。在本文中,我們將重點介紹如何使用curl獲取JSON數據。

首先,我們需要在C代碼中引入curl庫:

#include <curl/curl.h>

接下來,我們需要定義一個獲取JSON數據的函數:

char *get_json_data(char *url) {
CURL *curl;
CURLcode res;
char *data = NULL;
long code;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_memory_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&data);
res = curl_easy_perform(curl);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code);
if(res != CURLE_OK || code != 200) {
data = NULL;
}
curl_easy_cleanup(curl);
}
return data;
}

這個函數包括了以下步驟:

  • 初始化curl
  • 設置請求URL
  • 設置跟隨重定向
  • 設置寫入回調函數,用于將獲取的數據寫入內存
  • 執(zhí)行請求
  • 獲取響應狀態(tài)碼
  • 清理curl
  • 返回獲取到的數據

我們還需要定義一個寫入回調函數:

static size_t write_memory_callback(void *data, size_t size, size_t nmemb, void *userp) {
size_t realsize = size * nmemb;
char *mem = NULL;
mem = realloc(*(char **)userp, *(size_t *)userp + realsize + 1);
if(mem) {
*(char **)userp = mem;
memcpy(&(mem[*(size_t *)userp]), data, realsize);
*(size_t *)userp += realsize;
mem[*(size_t *)userp] = '\0';
}
return realsize;
}

這個函數將請求得到的內容寫入到內存中,以便之后訪問。

最后,我們可以使用上述函數來獲取JSON數據:

int main(void) {
char *url = "https://example.com/data.json";
char *json_data = get_json_data(url);
if(json_data) {
// 對json_data進行處理,如解析、顯示等
printf("JSON數據: %s\n", json_data);
free(json_data);
} else {
printf("獲取JSON數據失敗。\n");
}
return 0;
}

在上面的代碼中,我們首先調用get_json_data函數來獲取JSON數據,然后對數據進行處理。

這就是使用curl獲取JSON數據的C語言代碼的基本結構。