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

c post入參json格式

呂致盈2年前9瀏覽0評論

在C語言中,使用POST請求發送JSON格式的數據是常見的需求,下面我們來學習如何進行實現。

首先,我們需要使用curl庫進行POST請求的發送。在發送請求前,我們需要將JSON格式的數據轉換為字符串格式。下面是一個示例代碼:

#include#include#include#include#include#include// 回調函數,將響應寫入到buffer中
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
size_t realsize = size * nmemb;
char *buffer = (char *)userdata;
memcpy(buffer + strlen(buffer), ptr, realsize);
return realsize;
}
// 發送POST請求
void post_json(const char *url, const char *json) {
CURL *curl;
CURLcode res;
char buffer[1024] = "";
curl = curl_easy_init();
if (curl) {
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl failed: %s\n", curl_easy_strerror(res));
} else {
printf("Response: %s\n", buffer);
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
}

在上面的代碼中,我們使用了libcurl庫,來進行POST請求的發送。其中,需要注意的是:

  • headers變量用來設置Content-Type為application/json,指明發送請求的數據為JSON格式
  • json變量用來存放JSON格式的數據,需要在發送請求前將其轉換為字符串格式

下面是一個使用示例:

// 構造需要發送的JSON數據
struct json_object *reqobj = json_object_new_object();
json_object_object_add(reqobj, "name", json_object_new_string("John"));
json_object_object_add(reqobj, "age", json_object_new_int(30));
const char *jsonStr = json_object_to_json_string(reqobj);
// 發送POST請求
const char *url = "http://example.com/api";
post_json(url, jsonStr);

在上面的代碼中,我們使用了json-c庫來構造JSON格式的數據,然后將其轉換為字符串格式,并發送POST請求。

綜上所述,使用C語言發送POST請求,入參為JSON格式的數據,需要使用libcurl庫并設置Content-Type為application/json,同時需要將JSON格式的數據轉換為字符串格式。