Qt使用HTTPS协议访问网站

Posted blogpuppet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Qt使用HTTPS协议访问网站的主要内容,如果未能解决你的问题,请参考以下文章

Qt网络编程之使用cookie

tomcat8配置https协议访问

应该用https协议访问的网页用http协议访问会怎么样

WordPress - 代码片段插件

QT 实用代码片段

Wordpress阻止访问wp admin€“wpsnipp.com网站你博客的Wordpress代码片段