如何从http响应中删除垃圾数据

how to remove garbage data from http response

我正在使用从服务器获取信息的 boost asio 编写 win32 c++ 代码。当我使用 LOCALHOST 时,代码运行良好,但是当我连接到在线服务器时,响应在 JSON 响应

的开头和结尾添加了整数

该代码适用于本地主机,不适用于在线服务器。我想知道是不是我的 http 设置有问题

http 设置为

string str = formData(data);
std::ostream request_stream(&request_);
request_stream << "POST " << path << " HTTP/1.1\r\n";
request_stream << "Host: " << server << "\r\n"; 
request_stream << "User-Agent: C/1.0\r\n";
request_stream << "Content-Type: application/x-www-form-urlencoded\r\n";
request_stream << "Content-Length: " << str.length() << "\r\n";
request_stream << "Accept: */*\r\n";
request_stream << "Connection: close\r\n\r\n";
request_stream << str ;

预期输出是: {"success":-2,"message":"no username"} 我得到的输出是: 26

{"success":-2,"message":"no username"}

0

26和0是垃圾数据

HTTP 回复使用分块 transfer-encoding(检查回复中的选项 header)。

在这种情况下你必须

  1. 阅读一行文字
  2. 将其内容解释为十六进制整数
  3. 准确提取此字节数(回复的部分内容)
  4. 从第1步开始重复,直到整数值为0