卡萨布兰卡网络服务器给出了看似随机的错误

时间:2014-06-25 10:11:19

标签: c++ casablanca

我使用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;
}

我已经放了两张照片:&#34; Handler的开头&#34;和#34;处理程序结束&#34;在handle_get函数中,它们都被打印,让我相信错误的原因与监听器的while循环有关,但它给出的错误与监听器无关:

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

我试图绕过听众可以返回错误的内容。

0 个答案:

没有答案