欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c post 獲取 json

林雅南2年前7瀏覽0評論

在C語言中,如果我們需要從一個Web服務API中獲取JSON格式的數據,我們可以使用cURL庫來完成這個任務。以下是示例代碼:

#include#include#include#include#define BUFFER_SIZE  (256 * 1024)  //define buffer size
int write_callback(char *buffer, size_t size, size_t nitems, void *userdata)
{
int segment_size = size * nitems;
char* new_buffer = realloc(userdata, strlen(userdata) + segment_size + 1);
if(new_buffer == NULL) {
printf("Not enough memory.\n");
return 0;
}
memcpy(new_buffer + strlen(new_buffer), buffer, segment_size);
new_buffer[strlen(new_buffer) + segment_size] = '\0';
return segment_size;
}
int request_json(const char* url, char* buffer)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url); //set url
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); //follow location
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); //set callback
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer); 
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
return 0;
}
curl_easy_cleanup(curl);
}
return 1;
}
int main()
{
char buffer[BUFFER_SIZE] = {0};
const char* url = "https://jsonplaceholder.typicode.com/posts/1"; //example URL
request_json(url, buffer);
printf("%s", buffer); //print JSON data
return 0;
}

代碼中,我們定義了一個回調函數 `write_callback` ,用于在接收到JSON數據時將其存儲在內存中。我們的主函數 `request_json` 使用cURL庫來向給定的URL發出HTTP請求,并在接收到數據時調用回調函數來保存其內容。最后,我們打印出存儲在buffer中的JSON數據。

需要注意的是,我們需要使用 `CURLOPT_FOLLOWLOCATION` 選項來確保該請求在遇到重定向時可以繼續執行。同樣,我們也可以使用其他選項來設置HTTP頭,設置超時時間,等等。