我使用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
我试图绕过听众可以返回错误的内容。