在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,则说明请求成功。