В качестве заголовка у меня есть клиент-серверное приложение, которое работает, но сейчас я пытаюсь изменить дизайн своего программного обеспечения, чтобы оно стало более элегантным. Поэтому я создал класс Server для создания http_listener и обработки методов POST и GET, но после этого он больше не работает. В .h у меня есть:
class 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));
но это не работает
Предложения?
m_listener.support(methods::POST, [this](http_request request){ this->handle_post(request); });
выглядит более правильным. Тем не менее, это http_request
Copyable? Если нет, вам нужно будет std::move
это или передать по ссылке.
Других решений пока нет …