0

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

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

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

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

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

在上面的签名中,request是一个 typedef basic_request<Tag>

它有一个构造函数,它引用一个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>');

我究竟做错了什么?

4

1 回答 1

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");
于 2015-05-06T16:33:58.687 回答