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

时间:2019-07-19 13:28:30

标签: c++ json boost-asio

am使用boost asio从服务器获取信息来处理win32 c ++代码。当我使用LOCALHOST时,代码运行良好,但是当我连接到在线服务器时,响应在JSON响应的开头和结尾添加了整数

该代码适用于localhost而不适用于在线服务器。我想知道我的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 ;

预期输出为: {“成功”:-2,“消息”:“没有用户名”} 我得到的输出是: 26

{“成功”:-2,“消息”:“没有用户名”}

0

26和0是垃圾数据

1 个答案:

答案 0 :(得分:2)

HTTP回复使用分块的传输编码(请检查回复标头中的选项)。

在这种情况下,您必须

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