Всем привет.
Есть встроенный класс Requests.
Я использую в нём функцию GetRequest.
Собственно, вот она:
string GetRequest(string url, string path = "", string ContentType = "") {
InternetSetOption(0, 42, NULL, 0);
HINTERNET hSocket = InternetOpen(TEXT("FORMATC"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
if (hSocket != NULL) {
HINTERNET hConnection = InternetConnect(hSocket, TEXT(url.c_str()), INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
if (hConnection != NULL) {
HINTERNET hRequest;
if (path == "") {
hRequest = HttpOpenRequest(hConnection, TEXT("GET"), NULL, NULL, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE, 1);
}
else {
hRequest = HttpOpenRequest(hConnection, TEXT("GET"), TEXT(path.c_str()), NULL, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE, 1);
}
if (hRequest != NULL) {
if (ContentType == "") {
HttpSendRequest(hRequest, NULL, 0, NULL, 0);
}
else {
HttpSendRequest(hRequest, ContentType.c_str(), ContentType.length(), NULL, NULL);
}
char strContent[1024];
DWORD dwByteRead;
InternetReadFile(hRequest, strContent, sizeof(strContent) - 1, &dwByteRead);
return string(strContent);
}
InternetCloseHandle(hRequest);
}
InternetCloseHandle(hConnection);
}
InternetCloseHandle(hSocket);
return "";
}
Спустя некоторое время в конец строки начались добавляться какие-то символы.
Первые 10-15 раз всё работало нормально, выводило вот так:
{"response":"ok"}
И я парсил json, и получал значение response.
Но потом через отладку я заметил, что выдаёт не такую строку
{"response":"ok"}
, а такую:
{"response":"ok"}(*@D
. Ну там не такие символы, но думаю, вы поняли. В общем из-за этих символов крашится nlohmann::json, и я не могу нормально спарсить. Помогите, что делать?
Обновил. Вот два скрина результата запроса:
https://imgur.com/a/2d1E3nm