淘先锋技术网

首页 1 2 3 4 5 6 7

在C语言中,通过使用POST方法向服务器传递多个参数,可以使用JSON数据类型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它的优点在于可以快速方便地在不同平台之间传输数据。

以下是一个使用POST方法发送JSON数据的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <jansson.h>
int main(void) {
	CURL* curl;
	CURLcode res;
char* url = "http://example.com/api/test";
	char* json_data;
	json_t* root;
	json_error_t error;
	long http_code = 0;
// 创建JSON对象
	root = json_pack("{s:s,s:i,s:s,s:s}", "name", "Alice", "age", 24, "email", "alice@example.com", "phone", "1234567890");
// 将JSON对象转换为字符串
	json_data = json_dumps(root, 0);
// 初始化CURL
	curl_global_init(CURL_GLOBAL_ALL);
	curl = curl_easy_init();
if (curl) {
// 设置HTTP请求头
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
// 设置POST请求参数
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(json_data));
// 发送POST请求
res = curl_easy_perform(curl);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if (res == CURLE_OK) {
printf("HTTP Status Code: %ld\n", http_code);
} else {
printf("Error: %s\n", curl_easy_strerror(res));
}
	}
// 释放资源
	curl_easy_cleanup(curl);
	curl_global_cleanup();
	free(json_data);
	json_decref(root);
return 0;
}

在上面的代码中,首先创建了一个JSON对象,包含了四个属性名分别是“name”、“age”、“email”和“phone”,对应的属性值分别是“Alice”、“24”、“alice@example.com”和“1234567890”。接下来使用json_dumps函数将JSON对象转换为字符串。然后通过libcurl库发送POST请求,指定了请求的URL地址、请求头的“Content-Type”为“application/json”、请求体为JSON数据字符串。最后通过curl_easy_perform函数发送POST请求,并通过curl_easy_getinfo函数获取了HTTP响应的状态码,如果状态码是200,则说明请求成功。