使用Qt访问网站的基本例子
我使用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