Я пытаюсь использовать Касабланку, чтобы потреблять REST API.
Я следую учебному пособию по Microsoft, как только я получаю сбой, и я не могу понять это.
Я использую Visual Studio 2017 с C ++ 11
Я кодировал функцию GetRequest (), которая работает, когда используется в новом пустом проекте, но когда я пытаюсь использовать ее в своем проекте (очень большой проект с миллионами строк кода).
У меня сбой в конструкторе http_client, в файле xmemory0 строка 118.
const uintptr_t _Ptr_container = _Ptr_user[-1];
Это ссылка на стек вызовов: https://i.imgur.com/lBm0Hv7.png
void RestManager::GetRequest()
{
auto fileStream = std::make_shared<ostream>();
// Open stream to output file.
pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile)
{
*fileStream = outFile;
// Create http_client to send the request.
http_client client(U("XXX/XXX.svc/"));
// Build request URI and start the request.
uri_builder builder(U("/IsLive"));
builder.append_query(U("q"), U("cpprestsdk github"));
return client.request(methods::GET, builder.to_string());
})
// Handle response headers arriving.
.then([=](http_response response)
{
printf("Received response status code:%u\n", response.status_code());
// Write response body into the file.
return response.body().read_to_end(fileStream->streambuf());
})
// Close the file stream.
.then([=](size_t)
{
return fileStream->close();
});
// Wait for all the outstanding I/O to complete and handle any exceptions
try
{
requestTask.wait();
}
catch (const std::exception &e)
{
printf("Error exception:%s\n", e.what());
}
}
РЕДАКТИРОВАТЬ: Я просто хочу добавить, что проблема в конструкторе http_client. Внутри него всегда происходит сбой, независимо от того, что я посылаю в качестве параметра.
Странно то, что он не падает, когда я просто делаю main (), который вызывает эту функцию.
Я предполагаю, что это должно быть связано с некоторыми проблемами с памятью, однако я понятия не имею, как я мог отладить это
У кого-нибудь есть идеи по этому поводу?
Спасибо и хорошего дня!