Qt使用Cookies對網站操作之Get和POST


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; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM