【问题标题】:How to construct a basic_request<Tag> object (cpp-netlib)如何构造一个 basic_request<Tag> 对象 (cpp-netlib)
【发布时间】:2015-05-07 00:33:58
【问题描述】:

我已成功使用 cpp-netlib (v0.11.0),并且正在开发一些单元测试来测试我的 HTTP 服务器和处理程序功能。

处理函数具有以下必需的签名:

typedef boost::network::http::server<RequestHandler> HttpServerType; 

void operator()(const HttpServerType::request& request, HttpServerType::response& response)

我想做的是实例化请求对象,这样我就可以调用处理程序的函数调用运算符。但我无法编译它。

在上面的签名中,requestbasic_request&lt;Tag&gt; 的 typedef,

它有一个构造函数,它引用boost::network::uri::uri

以下代码在使用 clang 3.5 编译时会产生错误。

boost::network::uri::uri url;

url << uri::scheme("http") << uri::host(host) << uri::port(port) << uri::path(path);

HttpServerType::request request(url);


No matching constructor for initialization of 'HttpServerType::request' (aka 'basic_request<boost::network::http::tags::http_server>');

我做错了什么?

【问题讨论】:

    标签: cpp-netlib


    【解决方案1】:

    我找到了一种方法。

    该模板专门用于 http_server 标记。

    template <>
    struct basic_request<tags::http_async_server> :
    not_quite_pod_request_base<tags::http_async_server> 
    {};
    

    这只有一个默认的ctor。

    以下代码可以编译:

    HttpServerType::request request;
    request.destination.append("fred"); 
    request.method.append("POST");
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多