pasagir16 августа 2018 г. 12:48
HTTP QNetworkAccessManager
C++, Qt, QNetworkAccessManager, http
Пытаюсь создать post() запрос -залогиниться на сервере и получить cookie. Велосипед изобретать не стал - все сделалкак по книге:
QNetworkAccessManager *manager; manager = new QNetworkAccessManager (); QNetworkRequest req; req.setUrl(QUrl("http://********.by/login")); req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); //get-запрос идет нормально //manager->get(QNetworkRequest(QUrl("http://env-2764881.mycloud.by/login"))); QByteArray postData; postData.append("email=*******@gmail.com&"); postData.append("password=******"); //Создаем QCookieJar: manager->setCookieJar(new QNetworkCookieJar(manager)); connect (manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
manager->post(req, postData);
СЛОТ
void Downloader::replyFinished(QNetworkReply *reply) { qDebug()<<"answer"; if(reply->error()) { qDebug()<<"ERROR"; qDebug()<<reply->errorString(); } else { qDebug()<<"reply->readAll()\n"<<reply->readAll(); } reply->deleteLater(); }
Как получить html-код страницы после входа?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
d
- dsfs
- 26 апреля 2024 г. 14:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
d
- dsfs
- 26 апреля 2024 г. 14:35
C++ - Тест 001. Первая программа и типы данных
- Результат:73баллов,
- Очки рейтинга1
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 12:50
EVA25 декабря 2023 г. 21:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil Academics20 апреля 2024 г. 17:45
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 апреля 2024 г. 12:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
Добрый день
Спасибо, ща попробую
Наверное я куду-то не туда вставляю
код страницы не выдает, нашел вот такой способ. В слот пишем следующий код
сначала появляется код страницы до регистрации, потом код страницы после регистрации.
Да, ваш вариант тоже может быть вполне подходящим под задачу.
Спасибо
Еще один вопрос. Как в указанном примере на сервер можно передать несколько строк?
Вообще да, почему нет?
Я пытаюсь получить cookies и вставить их в повторный запрос. Пробую через QNeworkCookieJar, но пока не получается. Может есть какой пример?
К сожалению с куками не было повода поработать. Так что пока такой информации на сайте нет о QNeworkCookieJar
разобрался - просто полученные cookies пихаем в наш, уже существующий слот, правда, программа зацикливается, но это решаемо. Кстати, чем лучше пользоваться для прекращения работы программы при получения ответа от сервера?
Вообще, для выхода из программы можно использовать и доступ к инстансу приложения, через qApp->quit()
Также, если у вас есть главное окно приложения, то можно просто его закрыть.
mainwindow->close();
В данном случае, когда не остаётся активных окон, то приложение завершается.
И замечания по вашему коду
Вот это кусок кода бесполезный. Вы в любом случае выходите из метода.
Также рекомендую делать проверку так
Это сделает более полную проверку на наличие символов в QByteArray.
Не используйте foreach, подробнее в этой статье
Спасибо