我正在使用从服务器获取信息的 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步开始重复,直到整数值为0
关于c++ - 如何从http响应中删除垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113522/