使用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

 


免責聲明!

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



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