libcurl是一個非常強(qiáng)大的開源網(wǎng)絡(luò)庫,它提供了各種各樣的網(wǎng)絡(luò)支持協(xié)議,包括HTTP、FTP、SMTP等等。在這里我們將介紹如何使用libcurl來發(fā)送一個HTTP POST請求,它的請求體是一個JSON格式的字符串。
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/api");
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\": \"John\", \"age\": 30}");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
上述代碼使用了libcurl的C API來發(fā)送一個POST請求。我們首先用curl_global_init()函數(shù)來初始化libcurl,然后通過curl_easy_init()函數(shù)來初始化一個CURL對象。我們通過curl_easy_setopt()函數(shù)來設(shè)置請求的一些選項(xiàng),包括請求的URL、請求方法(這里是POST)、請求頭、請求體等等。最后,我們通過curl_easy_perform()函數(shù)來執(zhí)行請求。如果請求成功,它會將響應(yīng)體數(shù)據(jù)寫到stdout中,否則會輸出錯誤信息。
在這里,我們以一個JSON格式的字符串作為請求體。在實(shí)際的應(yīng)用中,我們可能會使用一個結(jié)構(gòu)體來表示請求體,然后將其序列化為JSON格式的字符串。這樣做非常方便,我們可以使用許多現(xiàn)成的JSON庫,如JSON-C、cJSON等等。
上一篇c json首尾引號