如何构建 basic_request<Tag> 对象 (cpp-netlib)
How to construct a basic_request<Tag> object (cpp-netlib)
我成功地使用了 cpp-netlib (v0.11.0),并且我正在开发一些单元测试来测试我的 HTTP 服务器和处理函数。
处理函数具有以下必需的签名:
typedef boost::network::http::server<RequestHandler> HttpServerType;
void operator()(const HttpServerType::request& request, HttpServerType::response& response)
我想做的是实例化请求对象,这样我就可以调用处理程序的函数调用运算符。但是我无法编译它。
在上面的签名中,request
是 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>');
我做错了什么?
我找到了一种方法。
该模板专用于 http_server 标签。
template <>
struct basic_request<tags::http_async_server> :
not_quite_pod_request_base<tags::http_async_server>
{};
而且这只有一个默认构造函数。
以下代码编译通过:
HttpServerType::request request;
request.destination.append("fred");
request.method.append("POST");
我成功地使用了 cpp-netlib (v0.11.0),并且我正在开发一些单元测试来测试我的 HTTP 服务器和处理函数。
处理函数具有以下必需的签名:
typedef boost::network::http::server<RequestHandler> HttpServerType;
void operator()(const HttpServerType::request& request, HttpServerType::response& response)
我想做的是实例化请求对象,这样我就可以调用处理程序的函数调用运算符。但是我无法编译它。
在上面的签名中,request
是 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>');
我做错了什么?
我找到了一种方法。
该模板专用于 http_server 标签。
template <>
struct basic_request<tags::http_async_server> :
not_quite_pod_request_base<tags::http_async_server>
{};
而且这只有一个默认构造函数。
以下代码编译通过:
HttpServerType::request request;
request.destination.append("fred");
request.method.append("POST");