Всем привет! Разбираюсь с QtNetwork/webkit. Для понимания сути решил написать программу, которая бы логинилась на сайт и получала новые письма. Вот написал такой код (класс производный от QNetworkAccessManager, экземпляр создается в main):
CTest::CTest(QObject *pParent) : QNetworkAccessManager(pParent)
{
QObject::connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
SLOT(slotAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
QObject::connect(this, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotReplyFinished(QNetworkReply*)));
QObject::connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), this,
SLOT(slotSslErrors(QNetworkReply*, const QList<QSslError>&)));
Login(QUrl("http://www.yandex.ru"), "login", "pass");
}
void CTest::slotReadyRead()
{
if (!m_pReply) return;
QFile oFile("/home/evgeny/123");
oFile.open(QIODevice::WriteOnly);
oFile.write(m_pReply->readAll());
oFile.close();
}
void CTest::Login(const QUrl& oUrl, const QString& sLogin, const QString& sPassword)
{
QString sRequestString = "act=login&email=" + sLogin + "&pass=" + sPassword;
QByteArray oRequestString = sRequestString.toAscii();
QNetworkRequest oRequest(oUrl);
m_pReply = this->post(oRequest, oRequestString);
QObject::connect(m_pReply, SIGNAL(finished()), this, SLOT(slotFinished2()));
QObject::connect(m_pReply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
QObject::connect(m_pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)));
}
slotReadyRead вызывается и в файле 123 вижу такое:
({id:"",login:A.isSessionValid()?A.getCookie("yandex_login")||"":"",yandexuid:A.getCookie("yandexuid"),locale:"ru",
retpath:window.location.toString(),"passport-host":"//passport.yandex.ru","pass-host":"//pass.yandex.ru","passport-msg":C.id,
"show-counters-percent":100},C))["show-counters"]=Math.round(Math.random()*100)<=C["show-counters-percent"];B(function()
{C.oframebust&&A.oframebust(C.oframebust)});return C});A.block||(A.block={});A.blockInit||(A.blockInit=function(C,D)
{C=C||document;D=D||".g-js";B(C).find(D).each(function(){var H=B(this),G=this.onclick?this.onclick():{},E=G.name||"",F=A.block
там много такого непонятного..... Вот хотел узнать (если кто знает), что это такое? =) Это нормально? Как узнать что я залогинился? И как сами письма получить?
Огромное спасибо если кто подскажет!
Сообщение отредактировал Rocky - 10.12.2010, 12:38