我使用Qt版本是Qt5.14.0
注:本例子只能用Http協議,如果要使用Https協議,請查看這篇文章:《Qt使用HTTPS協議訪問網站》
在本例子中需要使用以下幾個類:
<QNetworkAccessManager> <QNetworkReply> <QNetworkRequest>
使用方式:
1.在源文件中添加這個頭文件:
#include <QtNetwork>
如果提示沒有這個頭文件,請先執行第二步,並保存.pro文件。
2.在.pro項目文件中添加以下代碼:
QT += network
源碼:
#include <QCoreApplication> #include "TestNet.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); TestNet One; One.GetWeb(); return a.exec(); } //main.cpp
#include <QtNetwork> #include <iostream> #include <QFile> class TestNet : public QObject { Q_OBJECT public: QNetworkAccessManager *m_manager = NULL; QNetworkRequest *m_request = NULL; //訪問網站 void GetWeb() { //建立新對象 m_manager = new QNetworkAccessManager(); m_request = new QNetworkRequest(QUrl("http://www.baidu.com/")); //連接槽 QObject::connect(m_manager,&QNetworkAccessManager::finished,this,&TestNet::GetWebFinished); //發送Get請求 m_manager->get(*m_request); } //訪問后做的操作 void GetWebFinished(QNetworkReply *reply) { //轉換為utf-8編碼,這樣就可以顯示中文了 QTextCodec *codec = QTextCodec::codecForName("utf8"); QString getData = codec->toUnicode(reply->readAll()); //輸出文件 QFile out_file("One.html"); out_file.open(QIODevice::Text | QIODevice::WriteOnly); out_file.write(getData.toUtf8()); out_file.close(); } }; //TestNet.h