C++ 以TCP 形式向 HTTP 服务器发送 JSON 格式数据 {"1":"aaa" "2":"bbbb" } 演示
时间: 2024-05-24 18:08:57 浏览: 13
C++ 可以使用 socket 编程库实现 TCP 连接和 HTTP 通信,使用第三方库如 RapidJSON 解析和生成 JSON 数据。具体步骤如下:
1. 创建 TCP 连接:使用 socket 函数创建套接字,并使用 connect 函数连接到 HTTP 服务器的 IP 地址和端口号。
2. 构造 HTTP 请求头:HTTP 请求头中需要包含发送 JSON 数据的 Content-Type 和 Content-Length 等信息。例如,可以构造如下请求头:
```
POST /path/to/api HTTP/1.1\r\n
Host: example.com\r\n
Content-Type: application/json\r\n
Content-Length: 18\r\n
\r\n
```
3. 生成 JSON 数据:使用 RapidJSON 库生成 JSON 数据。例如,可以如下生成 JSON 数据:
```cpp
rapidjson::Document doc;
doc.SetObject();
rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
doc.AddMember("1", "aaa", allocator);
doc.AddMember("2", "bbbb", allocator);
rapidjson::StringBuffer strBuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
doc.Accept(writer);
std::string jsonStr = strBuf.GetString();
```
4. 发送 HTTP 请求:将构造好的 HTTP 请求头和 JSON 数据发送到服务器。例如,可以使用 send 函数发送数据:
```cpp
std::string requestStr = httpRequestHeader + jsonStr;
send(socketFd, requestStr.c_str(), requestStr.size(), 0);
```
5. 接收 HTTP 响应:使用 recv 函数接收服务器返回的 HTTP 响应消息。例如,可以使用 recv 函数接收数据:
```cpp
char buffer[1024];
int recvLen = recv(socketFd, buffer, sizeof(buffer), 0);
std::string responseStr(buffer, recvLen);
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)