C語(yǔ)言的POST JSON請(qǐng)求可以使用許多不同的庫(kù)和方法,其中一個(gè)流行的選擇是使用cURL庫(kù)和jansson庫(kù)。
在這篇文章中,我們將探討如何使用cURL和jansson在C語(yǔ)言中進(jìn)行POST JSON請(qǐng)求。
步驟1:安裝cURL和jansson庫(kù)
#include <curl/curl.h>
#include <jansson.h>
您需要先安裝cURL和jansson庫(kù)??梢詮墓俜骄W(wǎng)站下載源代碼,并根據(jù)說(shuō)明進(jìn)行安裝。
步驟2:構(gòu)建JSON數(shù)據(jù)
json_t *json = json_pack("{s:s,s:s,s:s}",
"name", "Alice",
"age", "25",
"job", "Engineer");
使用jansson庫(kù)的json_pack函數(shù)可以輕松地構(gòu)建JSON數(shù)據(jù)。在此例中,我們使用了三個(gè)鍵值對(duì)來(lái)表示人物的名稱、年齡和工作。
步驟3:設(shè)置cURL選項(xiàng)
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
char* url = "https://example.com/api/v1/persons";
cJSON *json_str = cJSON_Print(json);
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_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_str);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(json_str));
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
}
使用cURL的CURLOPT選項(xiàng)可以設(shè)置請(qǐng)求的各種選項(xiàng)。在此例中,我們?cè)O(shè)置了URL和POST請(qǐng)求類型,以及JSON數(shù)據(jù)作為POST請(qǐng)求正文。
還必須通過(guò)HTTP標(biāo)頭指定Content-Type。這使服務(wù)器知道我們發(fā)送的是JSON數(shù)據(jù)。
步驟4:處理響應(yīng)
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
} else {
long response_code;
curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &response_code);
printf("Response code: %ld\n", response_code);
}
要處理響應(yīng),我們首先檢查curl_easy_perform()函數(shù)是否成功返回CURLE_OK。如果成功,則可以通過(guò)CURLINFO_RESPONSE_CODE選項(xiàng)獲得響應(yīng)代碼。
這就是在C語(yǔ)言中使用cURL和jansson進(jìn)行POST JSON請(qǐng)求的基礎(chǔ)知識(shí)。