QT中如何更新COOKIE的过期时间
我制作了一个应用,登陆邮箱时得到网站的cookie,这个时候我将cookie保存到一个全局变量中,然后使用该cookie,进行邮件访问,但是时间长了之后,这个cookie就失效了,正常情况在浏览器访问网站cookie是会更新的,不会失效的。我尝试了每隔一段时间,全新将当前的cookie替换到全局变量,但是这个办法行不通。
请不要告诉我再登陆一次,那样不是完美的解决方案。。
kakaa
9 years, 11 months ago
Answers
此问题我已解决,采用的方式是:
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