隨著Web應(yīng)用程序的普及,越來越多的網(wǎng)站使用Ajax來實(shí)現(xiàn)與服務(wù)器的交互。
而Json是一種輕量級的數(shù)據(jù)交換格式,也越來越受到開發(fā)者的青睞。在使用C語言進(jìn)行開發(fā)時(shí),如何獲取一個(gè)Ajax網(wǎng)頁的Json數(shù)據(jù)呢?
首先,我們需要準(zhǔn)備好一個(gè)能夠發(fā)送Http請求的庫,比如curl庫。
我們可以使用curl庫獲取Ajax網(wǎng)頁的Json數(shù)據(jù),并將其保存在一個(gè)char數(shù)組中。
#include <stdio.h> #include <curl/curl.h> int main() { CURL *curl; CURLcode res; char *url = "https://example.com/ajaxdata"; char *response_data; long http_code = 0; 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_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_data); res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); if (http_code == 200) { printf("Response:\n%s\n", response_data); } else { printf("Error: Http Code %ld\n", http_code); } } curl_easy_cleanup(curl); } return 0; } static size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) { size_t realsize = size * nmemb; char *buffer = (char *)userdata; memcpy(buffer, ptr, realsize); return realsize; }
代碼中,我們發(fā)送了一個(gè)GET請求到"https://example.com/ajaxdata",使用write_data()函數(shù)將請求返回的數(shù)據(jù)保存到一個(gè)char數(shù)組中。
如果服務(wù)器返回狀態(tài)碼為200,則說明請求成功,我們可以在控制臺打印出返回的數(shù)據(jù)。
總結(jié):
使用curl庫可以方便地發(fā)送Http請求。通過將返回的數(shù)據(jù)保存在一個(gè)char數(shù)組中,可以對Json數(shù)據(jù)進(jìn)行進(jìn)一步的解析和處理。