Boost asio http请求返回部分响应

时间:2015-10-13 15:03:20

标签: c++ boost-asio

我正在关注此处的boost文档中的示例客户端:

http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/client/sync_client.cpp

我发现我得到的回应只是部分回答。我正在观察的症状在这段代码中:

while (boost::asio::read(socket, response,
          boost::asio::transfer_at_least(1), error)) {
      std::cout << &response;
}

尽管我的回复的内容长度是2947795,但上面的while循环只在读取了261980的响应时退出,而不是全部。

这段代码是否会导致它在结束前停止读取并退出循环?

更新1

如果我将请求的连接更改为Connection: keep-alive,我会返回完整的响应主体,但它永远不会退出while循环。我是否需要编写自己的检查以查看读取长度==内容长度,然后退出?

更新2

我发现奇怪的是,while循环总是在每次读取相同数量(即261980)后退出。

0 个答案:

没有答案