• 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

     

  • 相关阅读:
    Mysql_常规操作
    三剑客
    Nginx_安全2
    shell_常规小脚本
    redis数据库持久化
    redis数据库操作
    keepalived高可用lvs集群
    ansible的roles角色
    keepalived高可用
    keepalived概念
  • 原文地址:https://www.cnblogs.com/BlogPuppet/p/12804271.html
Copyright © 2020-2023  润新知