Я хочу войти на страницу с помощью QNetworkAccessManager и сохранить, кроме файлов cookie, чтобы получить исходный код со страницы, на которую необходимо войти.
С моим кодом я не могу заполнить входы на странице, но не могу нажать кнопку.
Может кто-нибудь помочь мне, пожалуйста?
В .pro файле:
QT + = сеть
Вот мой код:
file.h:
#include <QNetworkAccessManager>
#include <QUrl>
#include <QByteArray>
#include <QString>
#include <QEventLoop>
#include <QNetworkCookieJar>
#include <QNetworkProxy>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrlQuery>
#include <iostream>
#include <QObject>
#include <QCoreApplication>
class object : public QObject
{
Q_OBJECT
public:
QUrlQuery postData;
QNetworkAccessManager *networkManager;
QUrl serviceUrl;
QNetworkCookieJar *cookies;
QNetworkRequest request;
object(QObject *parent = 0);
~object();
void load();
public slots:
void finished(QNetworkReply* a);
};
file.cpp:
#include "networkaccessmanager.h"
object::object(QObject *parent)
: QObject(parent)
{
networkManager = new QNetworkAccessManager();
serviceUrl = QUrl("https://*/user/login?redirect_to=");
cookies = networkManager->cookieJar();
connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*)) );
}
object::~object()
{
}
void object::load()
{
postData.addQueryItem("user_name", "use");
postData.addQueryItem("password", "pw");
request.setUrl(serviceUrl);
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
networkManager->post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
}
void object::finished(QNetworkReply *a)
{
std::cout << a->readAll().toStdString() << std::endl;
QCoreApplication::exit();
}
main.cpp:
#include <QCoreApplication>
#include <iostream>
#include "networkaccessmanager.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
object obj;
obj.load();
return a.exec();
}