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

标签 c++ json boost-asio

我正在使用从服务器获取信息的 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 ;

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

{"成功":-2,"消息":"无用户名"}

0

26和0是垃圾数据

最佳答案

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

在这种情况下你必须

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

关于c++ - 如何从http响应中删除垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113522/

相关文章:

c++ - boost asio TCP 服务器必须绑定(bind)到 IP 地址?

c++ - typeid 不适用于非静态成员函数

C++:如何用拆分查找单词?正则表达式

c++ - 如何想出好的设计?

c# - 反序列化包含 csv 文件的 json 作为响应

javascript - 如何在jquery sortable中获取json数据?

c++ - 将 char* 转换为 boost::array 以供套接字使用

c++ - 具有右值引用成员的通用复制构造函数

java - Hibernate 是否支持 Postgres 9.2 Json 数据类型?

c++ - BOOST-ASIO 阻塞服务器不响应阻塞客户端?