如何构造basic_request <tag>对象(cpp-netlib)

时间:2015-04-30 19:30:57

标签: cpp-netlib

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

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

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

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

我希望能够实例化请求对象,以便我可以调用处理程序的函数调用操作符。但是我无法编译它。

在上述签名中,requestbasic_request<Tag>的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>');

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了办法。

该模板专门用于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");