与cpp-netlib的http连接有多近?

Kas*_*erg 2 c++ cpp-netlib

运行从[/ edit] HttpClient示例复制的Cpp-netlib(版本0.11-rc1)[编辑(添加)] 代码时,无法完成.

我认为是因为连接处于打开状态.1.我的假设是否正确?2.是否必须手动关闭连接?3.如果是,如何访问连接?

Kas*_*erg 6

在CPP-NETLIB http_client似乎使用的asio::io_service保持运行.

要完成HttpClient程序的使用asio::io_service::stop().

为了能够访问io_servicehttp_client用途:

  1. 创建一个io_service实例;
  2. 供应给http_clientvia http_client_options; 和
  3. 当程序需要完成,呼吁stop()io_service-instance.

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
}
Run Code Online (Sandbox Code Playgroud)

(有关完整示例,请参阅https://github.com/kaspervandenberg/https-tryout/blob/e8a918c5aa8efaaff3a37ac339bf68d132c6d2d6/httpClient.cxx.)