所使用的Qt版本:5.14.0
可以先看一下這篇文章:《使用Qt訪問網站的基本例子》
注: 如果出現“qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed”這個錯誤,請查看這篇文章:《Qt TLS初始化失敗解決辦法》
基於上面文章的例子進行更改:
#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("https://gitee.com/")); //設置SSL連接 QSslConfiguration config; QSslConfiguration conf = m_request->sslConfiguration(); conf.setPeerVerifyMode(QSslSocket::VerifyNone); conf.setProtocol(QSsl::TlsV1SslV3); m_request->setSslConfiguration(conf); //連接槽 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