Qt使用HTTPS協議訪問網站


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

 


免責聲明!

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



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