gpt4 book ai didi

c++ - 使用 cpp-netlib 的异步客户端响应?

转载 作者:太空狗 更新时间:2023-10-29 22:59:22 24 4
gpt4 key购买 nike

我正在考虑将 cpp netlib 用于新项目。所有示例都显示了以阻塞方式读取响应正文:

client::response response_ = client_.get(request_);
std::string body_ = body(response_);

如果我用异步标签构造我的客户端对象:

basic_client<http_async_8bit_udp_resolve_tags, 1, 1> client_();

这有什么影响?

是否有可能获得 body 的结果?包装器作为 boost::shared_future<std::string>

我是否只需要将阻塞调用包装在它自己的线程中?

最佳答案

查看当前的http客户端文档:http://cpp-netlib.org/0.12.0/reference/http_client.html

  1. http 客户端现在默认总是异步的
  2. 您可以选择在 getpost 调用中提供回调函数或对象:

    struct body_handler {

    explicit body_handler(std::string & body)
    : body(body) {}

    BOOST_NETWORK_HTTP_BODY_CALLBACK(operator(), range, error) {
    // in here, range is the Boost.Range iterator_range, and error is
    // the Boost.System error code.
    if (!error)
    body.append(boost::begin(range), boost::end(range));
    }

    std::string & body;
    };

    // somewhere else
    std::string some_string;
    response_ = client_.get(request("http://cpp-netlib.github.com/"),
    body_handler(some_string));
  3. client::response 对象已经封装了 future 对象:

The response object encapsulates futures which get filled in once the values are available.

关于c++ - 使用 cpp-netlib 的异步客户端响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com