Qt获取cookie非常简单。只要我们继承QNetworkCookieJar之后然后实现一个自己的获取cookie的接口,
通过它的protected成员函数allCookies即可获得当前webview里面的浏览过页面所有保存的cookie了。
当然还需要通过当前webview的QNetworkAccessManager来把我们的cookie对象关联一下。
.h
#ifndef NETWORKCOOKIE_H
#define NETWORKCOOKIE_H
#include <QtNetwork/QNetworkCookie>
#include <QtNetwork/QNetworkCookieJar>
class NetworkCookie : public QNetworkCookieJar
{
Q_OBJECT
public:
NetworkCookie(QObject *parent);
~NetworkCookie();
QList<QNetworkCookie> getCookies();
void setCookies(const QList<QNetworkCookie>& cookieList);
private:
};
#endif // NETWORKCOOKIE_H
.Cpp
#include "networkcookie.h"
NetworkCookie::NetworkCookie(QObject *parent)
: QNetworkCookieJar(parent)
{
}
NetworkCookie::~NetworkCookie()
{
}
QList<QNetworkCookie> NetworkCookie::getCookies()
{
return allCookies();
}
void NetworkCookie::setCookies(const QList<QNetworkCookie>& cookieList)
{
if(this == NULL)
return;
this->setAllCookies(cookieList);
}
使用:
//设置cookie到浏览器
ui.webView->page()->networkAccessManager()->setCookieJar(&network_cookie_);
QList<QNetworkCookie> cookies = network_cookie_.getCookies();
结果:
环境:Qt5 + vs2010