qt 获取部分的cookie信息
需要解决的:
1.如何把获取的cookie转换为QString类型
2.正则表达式从一堆cookie中匹配出需要的那部分cookie信息
例子:
我要从以下一堆cookie信息中获取token
QNetworkCookie("token=3708083294.52.c45c23b4.2533917521.1462526171; expires=Sun, 08-May-2016 09:16:39 GMT; domain=.yunpan.360.cn; path=/") ,
代码:
QString cookieStr;
QString token;
//获取当前网页的cookies
webView->page()->networkAccessManager()->setCookieJar(&network_cookie_);
QList<QNetworkCookie> cookies = network_cookie_.getCookies();//获取cookie函数的调用,这里省略了那个函数的代码,csdn下载频道有
qDebug()<<"cookies:"<<cookies;
//以下是将QList<QNetworkCookie>转化为QString类型
for (int i = 0; i < cookies.count(); ++i)
cookieStr.append(cookies.at(i).toRawForm());
//以下是正则表达式匹配
QString pattern("token=([^;]+)");
QRegExp rx(pattern);
int pos =cookieStr.indexOf(rx);
qDebug() << pos;
if ( pos >= 0 ) //-1代表没匹配
{
qDebug() << rx.matchedLength();
qDebug() << rx.capturedTexts();
qDebug()<< "rx.cap(0):" << rx.cap(0); //text matching pattern
qDebug()<< "rx.cap(1):"<< rx.cap(1); // 满足第一个()里的内容
qDebug() << "rx.cap(2):"<< rx.cap(2); // 满足第二个()里的内容,这里只有一个()所以这里为空
qDebug() << rx.pos(0); // position of the nth captured text
qDebug() << rx.pos(1);
qDebug() << rx.pos(2);
}
token=rx.cap(1); //将匹配到的内容赋值给token
qDebug()<< "token:"<<token ;
不懂加我qq(看我资料),给你在线解答