C语言作为一种广泛应用于嵌入式系统、操作系统、驱动程序开发的高级编程语言,在实际的开发中也经常需要处理HTTP请求,其中包括发送POST请求并发送JSON数据。下面,我们就来介绍一下如何在C语言中发送POST请求并发送JSON数据。
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
int main() {
CURL * curl;
CURLcode res;
curl = curl_easy_init();
if (!curl) {
fprintf(stderr, "curl_easy_init failed!\n");
exit(EXIT_FAILURE);
}
char * json_data = "{ \"name\":\"Tom\",\"age\":25 }";
struct curl_slist * headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:3000/users");
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform failed: %s\n", curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
return 0;
}
上述代码中,我们使用curl库来发起HTTP请求,并且使用了CURLOPT_CUSTOMREQUEST选项来指定请求方法为POST,使用CURLOPT_POSTFIELDS选项来指定请求体中的JSON数据。
另外,我们还使用了curl_slist来设置请求头中的Content-Type为application/json,这是因为在POST请求中,我们需要通过Content-Type来告诉服务器请求体的格式。
最后,我们使用curl_easy_perform函数来执行请求,并通过res变量来判断请求是否成功。