QT中如何更新COOKIE的过期时间


我制作了一个应用,登陆邮箱时得到网站的cookie,这个时候我将cookie保存到一个全局变量中,然后使用该cookie,进行邮件访问,但是时间长了之后,这个cookie就失效了,正常情况在浏览器访问网站cookie是会更新的,不会失效的。我尝试了每隔一段时间,全新将当前的cookie替换到全局变量,但是这个办法行不通。
请不要告诉我再登陆一次,那样不是完美的解决方案。。

qt-creator QT C++

kakaa 9 years, 11 months ago

此问题我已解决,采用的方式是:
cookie->cookie.txt->QString->每5分钟秒正则表达式替换时间->QString->request


 QFile cookies(QDir::currentPath()+"/cookies.ini");
    if (cookies.exists()) {
        QList<QNetworkCookie> cookieList;
        cookies.open(QFile::ReadOnly);
        while (cookies.bytesAvailable()) {
            QByteArray arr = cookies.readLine();
            QString cookie = QString::fromUtf8(arr);
            if (cookie.endsWith("\n")) cookie.chop(1);

            //! 添加正则表达式,替换时间
            QDateTime time=QDateTime::currentDateTime();
            QString strtime=time.addSecs(60*60*2).toString("yyyy-MM-dd hh:mm:ss");
            cookie.replace(QRegExp("(\\d{4}\\-\\d{1,2}\\-\\d{1,2}\\s\\d{1,2}\\:\\d{1,2}\\:\\d{1,2})"),QString("%1").arg(strtime));

//            qDebug()<<cookie;
//            qDebug()<<strtime;
//            qDebug()<<time.toUTC().toString();

            cookieList.append(QNetworkCookie::parseCookies(cookie.toUtf8()));
        }
        cookies.close();
        setAllCookies(cookieList);
    }

桂雏菊は俺D嫁 answered 9 years, 11 months ago

Your Answer