c++按照http协议j发送son格式数据
时间: 2024-10-09 20:10:57 浏览: 35
【最新】C++ 通过socket tcp实现http post form_data表单提交图片, mp4到http服务器
在C++中,发送JSON格式的数据通过HTTP协议通常需要利用网络库如cURL、Poco C++ Libraries或者Boost.Asio等。以下是一个简化的示例,使用cURL库来发送POST请求并携带JSON数据:
```cpp
#include <curl/curl.h>
#include <string>
// 函数用于构建JSON字符串
std::string buildJson(const std::map<std::string, std::string>& data) {
std::string json;
json = "{";
for (const auto& pair : data) {
json += "\"" + pair.first + "\": \"" + pair.second + "\",";
}
// 去掉最后一个逗号
json.pop_back();
json += "}";
return json;
}
// 使用cURL发送POST请求
void sendHttpJson(const char* url, const std::map<std::string, std::string>& data) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
std::string json_data = buildJson(data);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)json_data.size());
// 设置HTTP头,告诉服务器我们发送的是JSON内容
curl_slist* headers = nullptr;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
// 清理
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_global_cleanup();
}
阅读全文