http_listener casablanca不会从公共方法绑定

时间:2017-05-03 01:43:01

标签: c++ visual-studio-2013 httplistener cpprest-sdk

作为标题我有一个可以工作的客户端服务器应用程序,但现在我尝试重新设计我的软件更优雅。所以我创建了一个Server类来创建一个http_listener并处理POST和GET方法,但之后它再也无法工作了。在.h我有:

class Server

{     上市:     Server(){}

Server(utility::string_t url);

pplx::task<void> open();
pplx::task<void> close();


void handle_post(web::http::http_request message);

私人:

// Error handlers
static void handle_error(pplx::task<void>& t);
// HTTP listener 
web::http::experimental::listener::http_listener m_listener;

};

在.c我有:

Server::Server(utility::string_t url) : m_listener(url)

{

m_listener.support(methods::POST, [this](http_request request){return Server::handle_post(request); });
m_listener.support(methods::GET, handle_get);

}

handle_get在.c中定义为测试,它可以工作,但我不能支持POST方法。 我也尝试过不同的POST方法初始化,如下所示:

m_listener.support(methods::GET, std::bind(&Server::handle_post, this, std::placeholders::_1));

但它不起作用。 建议?

1 个答案:

答案 0 :(得分:2)

m_listener.support(methods::POST, [this](http_request request){ this->handle_post(request); });

看起来更正确。但是,http_request是否可以复制?如果没有,您需要std::move或通过引用传递。