如何从http响应中删除垃圾数据 < P>使用Boost ASIO处理Win32 C++代码,从服务器获取信息。当我使用LOCALHOST时,代码运行良好,但是当我连接到在线服务器时,响应的开头和结尾都添加了整数

如何从http响应中删除垃圾数据 < P>使用Boost ASIO处理Win32 C++代码,从服务器获取信息。当我使用LOCALHOST时,代码运行良好,但是当我连接到在线服务器时,响应的开头和结尾都添加了整数,c++,json,boost-asio,C++,Json,Boost Asio,该代码与localhost配合使用效果很好,而与在线服务器配合使用效果不好。我想知道我的http设置是否有问题 http设置是 string str = formData(data); std::ostream request_stream(&request_); request_stream << "POST " << path << " HTTP/1.1\r\n"; request_stream << "Host: " <<

该代码与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 ;
string str=formData(数据);
std::ostream请求流(&request);

请求\u流HTTP应答使用分块传输编码(检查应答头中的选项)

在这种情况下,你必须

  • 读一行文字
  • 将其内容解释为十六进制整数
  • 精确提取此字节数(回复的部分内容)
  • 从步骤1重复,直到整数值为0

  • HTTP应答使用分块传输编码(检查应答头中的选项)

    在这种情况下,你必须

  • 读一行文字
  • 将其内容解释为十六进制整数
  • 精确提取此字节数(回复的部分内容)
  • 从步骤1重复,直到整数值为0

  • 或者,也可以使用完全理解并实现HTTP的HTTP库来处理发送和接收HTTP内容。我可以使用while(std::getline(response_stream,header)&&header!=“r”)读取标头@Berniegach然后,如果在从回复标题中提取的这些行中,您发现类似于
    传输编码:chunked
    ,这意味着您必须切换到这个答案中给出的解决方案。请查看完整的HTTP规范。通过一次只问一个问题,你不会学到如何正确地实现HTTP,就像这样,但你只需要阅读该协议的正式技术规范,并编写相应的代码,如果你想自己解析HTTP,而不是使用现有的众多HTTP客户机库中的一个,并正确地执行此操作,已经存在。@只有在服务器关闭连接时,Berniegach reading until EOF才会起作用。您应该在回复标题中找到
    Connection:close
    。或者,使用完全理解并实现HTTP的HTTP库来处理发送和接收HTTP内容。我可以用while(std::getline(response_stream,header)&&header!=“r”)读取标题@Berniegach然后,如果在从回复标题中提取的这些行中,您发现类似于
    传输编码:chunked
    ,这意味着您必须切换到这个答案中给出的解决方案。请查看完整的HTTP规范。通过一次只问一个问题,你不会学到如何正确地实现HTTP,就像这样,但你只需要阅读该协议的正式技术规范,并编写相应的代码,如果你想自己解析HTTP,而不是使用现有的众多HTTP客户机库中的一个,并正确地执行此操作,已经存在。@只有在服务器关闭连接时,Berniegach reading until EOF才会起作用。您应该在回复标题中找到
    连接:close
    。不,这不是垃圾数据。是HTTP。这是一个复杂的协议。使用HTTP库。信息不足。什么服务器?什么应用程序协议?哪个库处理HTTP响应?你怎么破译它?这可能是分块传输编码的产物。它可能是其他东西。不,它不是垃圾数据。是HTTP。这是一个复杂的协议。使用HTTP库。信息不足。什么服务器?什么应用程序协议?哪个库处理HTTP响应?你怎么破译它?这可能是分块传输编码的产物。可能是别的。