1

我正在使用Casablanca REST SDK 来制作网络服务。Web 服务让客户端通过 URL 传递 JSON 并对其进行处理。但是在某些情况下,如果我发送包含数组的 JSON,它会使服务崩溃。奇怪的部分是实际处理 JSON 的处理程序方法一直运行并在给出错误之前结束。我的主要功能是:

int main()
{   
    std::string ip;
    std::string port;
    std::ifstream inputStream;
    inputStream.open("ip_port.config");
    while(!inputStream.eof())
    {
        inputStream >> ip;
        inputStream >> port;
    }
    inputStream.close();

    std::string uri = "http://"+ip+":"+port+"/";
    //set up URL
    web::http::uri u(U(uri)); 

    //set up listener for URL
    web::http::experimental::listener::http_listener listener(u);
    listener.support(methods::GET, handle_get);
    try
        {
            pplx::task<void> l = listener.open();
            while(true)
            {
                l.wait();
                sleep(1);
            }
            listener.close().wait();
        }
    catch(int e)
    {
        std::stringstream errorMessage;
        errorMessage << "Error: " << e; 
        logRequest(errorMessage.str(), "Error Message");
    }
    return 0;
}

我在handle_get函数中放置了两个打印件:“处理程序的开始”和“处理程序的结束”,它们都被打印了,让我相信错误的原因与监听器的while循环有关,但是它给出的错误与侦听器无关:

terminate called after throwing an instance of 'std::out_of_range'
   what():  basic_string::substr

我试图围绕听众可能返回该错误的内容。

4

0 回答 0