我使用C ++ REST SDK构建一个HTTP服务器,用于接收邮递员的请求,但如果我这样编码:
http_listener listener(L"http://localhost/io");
listener.open().wait();
listener.support(methods::POST, [](http_request req) {
});
Postman可以在POST方法中使用http://localhost/io
连接到它,
但如果我编码如下:
http_listener listener(L"http://localhost:6000/io");
Postman无法使用http://localhost:6000/io
和POST方法连接到它。
但如果我编码像http_listener listener(L"http://localhost/io:6000");
Postman可以使用POST方法在http://localhost/io:6000
中与它连接。我怎样才能让http://localhost:6000/io
为我的听众服务?我使用的另一个程序总是向http://localhost:6000/io
发送http请求,所以我需要让我的服务器监听这个地址。
http_listener listener(L"http://localhost:6000"); //doesn't work, too.
但是,当我将6000更改为任何其他端口号,如7000或8000时,如http_listener listener(L"http://localhost:7000")
或http_listener listener(L"http://localhost:7000/io")
,它适用于我。我使用netstat -a -b
检查6000是否已被其他程序占用,但6000是免费的。
答案 0 :(得分:0)
我想我有答案。我经历了同样的问题,我使用了一个不同的未使用端口和不同的“支持”功能:
http_listener listener(L"http://localhost:11369/");
listener->open().wait();
listener->configuration() ;
listener->support(methods::GET,
std::tr1::bind(&CMFCApplication1Dlg::handle_get,
this,
std::tr1::placeholders::_1));
listener->support(methods::PUT,
std::tr1::bind(&CMFCApplication1Dlg::handle_put,
this,
std::tr1::placeholders::_1));
listener->support(methods::POST,
std::tr1::bind(&CMFCApplication1Dlg::handle_post,
this,
std::tr1::placeholders::_1));
listener->support(methods::DEL,
std::tr1::bind(&CMFCApplication1Dlg::handle_delete,
this,
std::tr1::placeholders::_1));
我在C ++ MFC应用程序中使用http_listener。所以对你来说肯定会有所不同。如果您需要任何帮助处理程序来回答收到的请求,请不要犹豫告诉我! 真诚的,艾哈迈德。