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

c post請求參數為json格式

老白2年前10瀏覽0評論

在C語言中發送post請求,需要發送json格式的參數時,需要使用http的相關庫,如curl庫或httpclient庫。

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdbool.h>#include <curl/curl.h>/**
 * 定義post請求參數結構體類型
 */
struct POST_DATA {
char *json;
size_t size;
};
/**
 * 定義curl的write_callback回調函數,用于獲取服務器返回的數據
 */
static size_t write_callback(char *data, size_t size, size_t nmemb, void *userdata) {
size_t realsize = size * nmemb;
struct POST_DATA *post_data = (struct POST_DATA *)userdata;
post_data->json = (char *)realloc(post_data->json, post_data->size + realsize + 1);
if (post_data->json == NULL) {
printf("Failed to allocate memory for post data\n");
return 0;
}
memcpy(post_data->json + post_data->size, data, realsize);
post_data->size += realsize;
post_data->json[post_data->size] = 0;
return realsize;
}
int main(int argc, char **argv) {
// 初始化curl
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl = curl_easy_init();
if(curl) {
// 設置url
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/user");
// 設置post請求
curl_easy_setopt(curl, CURLOPT_POST, 1L);
// 設置post請求的json格式數據
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\":\"test\",\"age\":18}");
// 設置回調函數用于獲取服務器返回的數據
struct POST_DATA post_data = {0};
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &post_data);
// 執行請求操作
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK) {
printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
} else {
printf("Server response:\n%s\n", post_data.json);
}
// 釋放資源
free(post_data.json);
curl_easy_cleanup(curl);
}
// 清除curl環境
curl_global_cleanup();
return 0;
}

以上為使用curl庫發送post請求的相關代碼,其中我們設置了url、post請求、post請求的參數為json格式數據,以及設置了回調函數來獲取服務器返回的數據。