C/C++

C++ Школьный проект

У меня есть задача - написать приложение под Windows, которое будет отображать оценки пользователя в школьном электронном дневнике, запрашивая у него для этого пароль и логин. Я планирую написать само приложение на QT. Но я не знаю, как получить данные с сайта, авторизовав там пользователя. Подскажите, пожалуйста, как я могу это сделать? Буду благодарен за любой ответ. C++
Для получения данных с сайта, авторизовав пользователя, можно использовать библиотеку Qt Network, которая позволяет отправлять HTTP-запросы и обрабатывать ответы.

Для авторизации пользователя на сайте, можно отправить POST-запрос на страницу входа, передавая логин и пароль в параметрах запроса. Далее, после успешной авторизации, можно отправить GET-запрос на страницу, содержащую оценки пользователя, и распарсить полученный ответ, чтобы получить нужную информацию.

Пример отправки POST-запроса с использованием Qt Network:
 QUrl url("http://example.cc/login"); 
QUrlQuery postData;
postData.addQueryItem("login", "user");
postData.addQueryItem("password", "password");

QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QNetworkAccessManager manager;
QNetworkReply *reply = manager.post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
Пример отправки GET-запроса и получения ответа:
 QUrl url("http://example.cc/grades"); 
QNetworkRequest request(url);

QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(request);

QEventLoop loop;
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();

if (reply->error() == QNetworkReply::NoError) {
QByteArray data = reply->readAll();
// Обработка ответа
} else {
// Обработка ошибки
}
После получения ответа, его можно распарсить, например, с помощью библиотеки QtXml или QJson. Если ответ приходит в формате HTML, можно использовать библиотеку Qt WebEngine или Qt WebKit для отображения данных внутри приложения.

Также следует учитывать, что для авторизации и получения данных может потребоваться использование капчи или других механизмов защиты от автоматических запросов, которые могут затруднить выполнение задачи.
Naruto Udzumaki
Naruto Udzumaki
228
Лучший ответ
Надо использовать объект доступа к веб ресурсам, получить ключ авторизации и при втором обращении его добавить в объект.

Надо найти пример и сделать всё как там написано.

Я знаю только как с помощью WinHttp но это из СОМ Windows и к Qt не относится
Арман Тебериков Можете, пожалуйста, чуть подробнее?
Лучше писать на Python чс помощью requests или Selenium. Если только C++ ищи дополнения связанные с запросами и api.
посмотрите библиотеки curl и gumbo