My cookieJar class implementation work good, with any web site in http (google etc...) but with an https request in don't received any cookie. Normally i have to received cookie with https://cas.univ-ubs.fr/login in GET and POST request. I was using readAll for the id, just for that.

Qt Code:
  1. // CookieJar class
  2. #include "Cookies.h"
  3.  
  4. QList<QNetworkCookie> CookieJar::cookiesForUrl ( const QUrl & url ) const
  5. {
  6. return QNetworkCookieJar::cookiesForUrl(url);
  7. }
  8.  
  9. bool CookieJar::setCookiesFromUrl ( const QList<QNetworkCookie> & cookieList, const QUrl & url )
  10. {
  11. return QNetworkCookieJar::setCookiesFromUrl(cookieList, url);
  12. }
  13.  
  14. CookieJar::CookieJar(QObject *parent)
  15. :QNetworkCookieJar(parent)
  16. {
  17. QFile cookieFile("Cookies.txt");
  18. if (cookieFile.exists() && cookieFile.open(QIODevice::ReadOnly) )
  19. {
  20. QList<QNetworkCookie> list;
  21. QByteArray line;
  22. while(!(line = cookieFile.readLine()).isNull())
  23. {
  24. list.append(QNetworkCookie::parseCookies(line));
  25. }
  26. setAllCookies(list);
  27. }
  28. }
  29.  
  30. CookieJar::~CookieJar()
  31. {
  32. QFile cookieFile("Cookies.txt");
  33. if (cookieFile.open(QIODevice::WriteOnly))
  34. {
  35. QTextStream out(&cookieFile);
  36. foreach(const QNetworkCookie & cookie, allCookies())
  37. {
  38. if (!cookie.isSessionCookie())
  39. {
  40. out << cookie.toRawForm() << endl;
  41. qDebug() << "write **********COOKIE******************* ";
  42. }
  43. }
  44. }
  45. }
To copy to clipboard, switch view to plain text mode 

Qt Code:
  1. // My request code
  2. void FenPrincipale::takeId()
  3. {
  4. QNetworkAccessManager *m = new QNetworkAccessManager();
  5. // Set the cookieJar
  6. m->setCookieJar(new CookieJar(this));
  7. QNetworkRequest requete(QUrl("https://cas.univ-ubs.fr/login"));
  8.  
  9. // I make a first GET request.
  10. QNetworkReply *r = m->get(requete);
  11. qDebug() << "takeId";
  12.  
  13. connect(r, SIGNAL(finished()), this, SLOT(takeCookies()));
  14. connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this,
  15. SLOT(messageErreur(QNetworkReply::NetworkError)));
  16.  
  17. }
  18.  
  19. void FenPrincipale::takeCookies()
  20. {
  21. QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
  22. QNetworkAccessManager *m = reply->manager();
  23.  
  24. // I recover the id
  25. QString source = reply->readAll();
  26. QString lt = source.section("\"",119,119);
  27. source = source.section("\"",41,41);
  28.  
  29. // Build url contents
  30. QUrl postData;
  31. postData.addQueryItem("username","");
  32. postData.addQueryItem("password",var2_Edit->text());
  33. postData.addQueryItem("warn", "true");
  34. // I make the id in the URL
  35. postData.addQueryItem("lt", lt);
  36. postData.addQueryItem("_eventId", "submit");
  37. postData.addQueryItem("submit", "SE CONNECTER");
  38.  
  39. QNetworkRequest requete(QUrl("https://cas.univ-ubs.fr/login"));
  40. requete.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
  41.  
  42. // I make the second request
  43. QNetworkReply *r = m->post(requete, postData.encodedQuery());
  44.  
  45.  
  46. connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(messageErreur(QNetworkReply::NetworkError)));
  47. connect(r, SIGNAL(finished()), this, SLOT(takeLink()));
  48.  
  49. connect(r, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(ErreurSsl(const QList<QSslError>&)));
  50. }
  51.  
  52. void FenPrincipale::takeLink()
  53. {
  54. QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
  55. QNetworkAccessManager *m = reply->manager();
  56.  
  57. // ----------> I want to have access to protect file in the web site with my cookie
  58. }
To copy to clipboard, switch view to plain text mode 

}