运行从[/edit] HttpClient 示例复制的 Cpp-netlib(版本 0.11-rc1)[edit(addition)] 代码未完成。
我认为这是因为连接处于打开状态。1. 我的假设正确吗?2.连接必须手动关闭吗?3. 如果可以,如何访问连接?
运行从[/edit] HttpClient 示例复制的 Cpp-netlib(版本 0.11-rc1)[edit(addition)] 代码未完成。
我认为这是因为连接处于打开状态。1. 我的假设正确吗?2.连接必须手动关闭吗?3. 如果可以,如何访问连接?
Cpp-netlibhttp_client
似乎使用了一个asio::io_service
持续运行的.
要完成一个 HttpClient 程序,请使用asio::io_service::stop()
.
为了能够访问io_service
使用http_client
:
io_service
实例;http_client
via http_client_options
;和stop()
-instance io_service
。cppnetlib 示例客户端变为:
#include <boost/network/protocol/http/client.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/shared_ptr.hpp>
int main(int argc, char*[] argv)
{
using namespace boost::network;
using namespace boost::network::http;
using namespace boost::asio; // LINE ADDED
client::request request_("http://127.0.0.1:8000/");
request_ << header("Connection", "close");
// ADDED / MODIFIED
boost::shared_ptr<io_service> io_service_ = boost::make_shared<io_service>();
client client_(client::options()
.io_service(io_service_));
// END ADDED
client::response response_ = client_.get(request_);
std::string body_ = body(response_);
io_service_->stop(); // LINE ADDED
}
(有关完整示例,请参阅https://github.com/kaspervandenberg/https-tryout/blob/e8a918c5aa8efaaff3a37ac339bf68d132c6d2d6/httpClient.cxx。)