// CookieJar class
#include "Cookies.h"
QList<QNetworkCookie> CookieJar
::cookiesForUrl ( const QUrl & url
) const{
return QNetworkCookieJar::cookiesForUrl(url);
}
bool CookieJar
::setCookiesFromUrl ( const QList<QNetworkCookie>
& cookieList,
const QUrl & url
) {
return QNetworkCookieJar::setCookiesFromUrl(cookieList, url);
}
CookieJar
::CookieJar(QObject *parent
) :QNetworkCookieJar(parent)
{
QFile cookieFile
("Cookies.txt");
if (cookieFile.
exists() && cookieFile.
open(QIODevice::ReadOnly) ) {
QList<QNetworkCookie> list;
while(!(line = cookieFile.readLine()).isNull())
{
list.append(QNetworkCookie::parseCookies(line));
}
setAllCookies(list);
}
}
CookieJar::~CookieJar()
{
QFile cookieFile
("Cookies.txt");
{
foreach(const QNetworkCookie & cookie, allCookies())
{
if (!cookie.isSessionCookie())
{
out << cookie.toRawForm() << endl;
qDebug() << "write **********COOKIE******************* ";
}
}
}
}
// CookieJar class
#include "Cookies.h"
QList<QNetworkCookie> CookieJar::cookiesForUrl ( const QUrl & url ) const
{
return QNetworkCookieJar::cookiesForUrl(url);
}
bool CookieJar::setCookiesFromUrl ( const QList<QNetworkCookie> & cookieList, const QUrl & url )
{
return QNetworkCookieJar::setCookiesFromUrl(cookieList, url);
}
CookieJar::CookieJar(QObject *parent)
:QNetworkCookieJar(parent)
{
QFile cookieFile("Cookies.txt");
if (cookieFile.exists() && cookieFile.open(QIODevice::ReadOnly) )
{
QList<QNetworkCookie> list;
QByteArray line;
while(!(line = cookieFile.readLine()).isNull())
{
list.append(QNetworkCookie::parseCookies(line));
}
setAllCookies(list);
}
}
CookieJar::~CookieJar()
{
QFile cookieFile("Cookies.txt");
if (cookieFile.open(QIODevice::WriteOnly))
{
QTextStream out(&cookieFile);
foreach(const QNetworkCookie & cookie, allCookies())
{
if (!cookie.isSessionCookie())
{
out << cookie.toRawForm() << endl;
qDebug() << "write **********COOKIE******************* ";
}
}
}
}
To copy to clipboard, switch view to plain text mode
// My request code
void FenPrincipale::takeId()
{
QNetworkAccessManager *m = new QNetworkAccessManager();
// Set the cookieJar
m->setCookieJar(new CookieJar(this));
QNetworkRequest requete
(QUrl("https://cas.univ-ubs.fr/login"));
// I make a first GET request.
QNetworkReply *r = m->get(requete);
qDebug() << "takeId";
connect(r, SIGNAL(finished()), this, SLOT(takeCookies()));
connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this,
SLOT(messageErreur(QNetworkReply::NetworkError)));
}
void FenPrincipale::takeCookies()
{
QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
QNetworkAccessManager *m = reply->manager();
// I recover the id
QString lt
= source.
section("\"",
119,
119);
source = source.section("\"",41,41);
// Build url contents
postData.addQueryItem("username","");
postData.addQueryItem("password",var2_Edit->text());
postData.addQueryItem("warn", "true");
// I make the id in the URL
postData.addQueryItem("lt", lt);
postData.addQueryItem("_eventId", "submit");
postData.addQueryItem("submit", "SE CONNECTER");
QNetworkRequest requete
(QUrl("https://cas.univ-ubs.fr/login"));
requete.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
// I make the second request
QNetworkReply *r = m->post(requete, postData.encodedQuery());
connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(messageErreur(QNetworkReply::NetworkError)));
connect(r, SIGNAL(finished()), this, SLOT(takeLink()));
connect(r, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(ErreurSsl(const QList<QSslError>&)));
}
void FenPrincipale::takeLink()
{
QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
QNetworkAccessManager *m = reply->manager();
// ----------> I want to have access to protect file in the web site with my cookie
}
// My request code
void FenPrincipale::takeId()
{
QNetworkAccessManager *m = new QNetworkAccessManager();
// Set the cookieJar
m->setCookieJar(new CookieJar(this));
QNetworkRequest requete(QUrl("https://cas.univ-ubs.fr/login"));
// I make a first GET request.
QNetworkReply *r = m->get(requete);
qDebug() << "takeId";
connect(r, SIGNAL(finished()), this, SLOT(takeCookies()));
connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this,
SLOT(messageErreur(QNetworkReply::NetworkError)));
}
void FenPrincipale::takeCookies()
{
QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
QNetworkAccessManager *m = reply->manager();
// I recover the id
QString source = reply->readAll();
QString lt = source.section("\"",119,119);
source = source.section("\"",41,41);
// Build url contents
QUrl postData;
postData.addQueryItem("username","");
postData.addQueryItem("password",var2_Edit->text());
postData.addQueryItem("warn", "true");
// I make the id in the URL
postData.addQueryItem("lt", lt);
postData.addQueryItem("_eventId", "submit");
postData.addQueryItem("submit", "SE CONNECTER");
QNetworkRequest requete(QUrl("https://cas.univ-ubs.fr/login"));
requete.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
// I make the second request
QNetworkReply *r = m->post(requete, postData.encodedQuery());
connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(messageErreur(QNetworkReply::NetworkError)));
connect(r, SIGNAL(finished()), this, SLOT(takeLink()));
connect(r, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(ErreurSsl(const QList<QSslError>&)));
}
void FenPrincipale::takeLink()
{
QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
QNetworkAccessManager *m = reply->manager();
// ----------> I want to have access to protect file in the web site with my cookie
}
To copy to clipboard, switch view to plain text mode
Bookmarks