1.添加QNetwork模塊:
a.Qt Creator中打開.pro文件添加QT+=Network;
b.VS_Qt中項目屬性中Qt Project Settings中Qmodules中勾選”QNetwork library“
2.添加頭文件:
#include <QNetworkAccessManager> #include <QNetworkCookieJar> #include <QNetworkRequest> #include <QNetworkReply>
3.獲取Post的cookies
//url為請求網址,content為請求內容,即傳遞的參數,allcookies應該定義為全局變量,這里為了演示,則定義為局部變量
void NuistMoney::PostLToNet(QString url ,QString content) { QByteArray _content = content.toUtf8(); int _contentLength = content.length(); QNetworkRequest req; req.setUrl(QUrl(url)); req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); req.setHeader(QNetworkRequest::ContentLengthHeader,_contentLength); QNetworkAccessManager nManager; QNetworkReply* getreply=nLManager.post(req,_content); QEventLoop loop; //下載完成后,直接退出子進程 connect(getreply, SIGNAL(finished()), &loop, SLOT(quit())); //子進程開始運行 loop.exec(); //讀取所有獲取到的網頁內容 QTextCodec *codec = QTextCodec::codecForName("utf8");//使用utf8編碼,這樣才可以顯示中文 QString data= codec->toUnicode(getreply->readAll());//獲取網頁的所有數據 QList<QNetworkCookie> allcookies=nManager.cookieJar()->cookiesForUrl(QUrl(murl)); }
4.使用cookies:
//根據獲取的cookies直接獲取murl網址指定的信息
QString NuistMoney::GetToAllNet(QString murl) { //轉換cookies成QVariant QVariant var; var.setValue(allcookies); //設置QNetworkRequest的網址和cookies QNetworkRequest req; req.setUrl(QUrl(murl)); req.setHeader(QNetworkRequest::CookieHeader,var); //通過QNetworkAccessManager對象獲取網頁內容 QNetworkAccessManager nManager; QNetworkReply* getreply=nManager.get(req); //創建一個子進程,以便於提供時間給QNetworkAccessManager對象下載完網頁內容 QEventLoop loop; //下載完成后,直接退出子進程 connect(getreply, SIGNAL(finished()), &loop, SLOT(quit())); //子進程開始運行 loop.exec(); //讀取所有獲取到的網頁內容 QTextCodec *codec = QTextCodec::codecForName("utf8");//使用utf8編碼,這樣才可以顯示中文 QString data= codec->toUnicode(getreply->readAll());//獲取網頁的所有數據 return data; }