2017-05-03 8 views
0

タイトルとして私は動作するクライアントサーバーアプリケーションを持っていますが、今私はより優雅に私のソフトウェアを再設計しようとしています。だから私はhttp_listenerを作成して、POSTを処理し、メソッドをGETするには、Serverクラスを作成したが、その後、それは.hiが持ってanymore.In動作しません:http_listener casablancaはパブリックメソッドからバインドしません

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; 

};

そして.ciであります

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)); 

が、それは動作しません。 提案?

答えて

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

もっと正確に見えます。ただし、http_requestはコピー可能ですか?そうでない場合は、std::moveまたは参照渡しが必要です。

+0

今、私の2つの "ソリューション"がうまくいかなかった理由を教えてくれますか? 私は成功していないstackoverflowの多くのスレッドでそれらを見つけました。 – kenhero

+0

@kenhero私はあなたが使用しているライブラリに精通していませんが、私の最初の考えは、あなたが最初の試みで 'this 'を渡していないということでした。 –

関連する問題