http_listener casablanca не связывается с публичным методом

В качестве заголовка у меня есть клиент-серверное приложение, которое работает, но сейчас я пытаюсь изменить дизайн своего программного обеспечения, чтобы оно стало более элегантным. Поэтому я создал класс 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));

но это не работает
Предложения?

0

Решение

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

выглядит более правильным. Тем не менее, это http_request Copyable? Если нет, вам нужно будет std::move это или передать по ссылке.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector