无法使用 http_listener(C++ REST SDK) 侦听具有本地主机地址的特定端口号

Cannot listen on specific port num with localhost address with http_listener(C++ REST SDK)

我使用 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 可以在 http://localhost/io:6000 中使用 POST 方法连接它。我怎样才能让 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是空闲的

我想我有答案了。我遇到了同样的问题,我使用了不同的未使用端口和 "support" 函数的不同用法:

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。所以这对你来说肯定会有所不同。如果您需要任何帮助处理程序来回答收到的请求,请随时告诉我! 此致,艾哈迈德。