0
点赞
收藏
分享

微信扫一扫

QT连接HTTPS,解决HTTPS问题

爱情锦囊 2022-04-13 阅读 94
ssl

简介

在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在Qt中使用https需要进行SSL认证。

1、pro文件最上方加以下扩展

QT       += network

2、添加头文件

#include <QNetworkReply>
#include <QDebug>
#include <QString>

3、查看QT所支持的版本

查看当前Qt版本是否支持OpenSSL,Qt编译使用的OpenSSL版本。当前使用的OpenSSl版本。只要编译版本是1.1.1的。安装的也使用1.1.1即可。后面的d、g版本号可不完全一致。使用版本比编译版本高即可。

    bool bSupp = QSslSocket::supportsSsl();
    QString buildVersion = QSslSocket::sslLibraryBuildVersionString();
    QString version = QSslSocket::sslLibraryVersionString();
    qDebug() << bSupp << buildVersion << version << endl;

不支持时打印如下
false “OpenSSL 1.1.1d 10 Sep 2019” “”
支持openSSL时打印如下
true “OpenSSL 1.1.1d 10 Sep 2019” “OpenSSL 1.1.1g 21 Apr 2020”

4、下载OpenSSL库

1、Qt必须使用5.12或更高版本
2、下载OpenSSL库:http://slproweb.com/products/Win32OpenSSL.html,选择32位和64位Light版本
3、安装OpenSSL,安装时选择“将库放入bin”,不要放到system里!
4、提取32位文件
将OpenSSL 32位的bin目录里的 libcrypto-1_1.dll 和 libssl-1_1.dll 拷贝到 C:\Qt\Qt5.12.3\5.12.3\mingw73_32\bin 下面
5、提取64位文件
将OpenSSL 64位的bin目录里的 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 拷贝到 C:\Qt\Qt5.12.3\5.12.3\mingw73_64\bin 下面

5. 使用https需要提取Qt提供的库文件

提取32位文件

将 C:\Qt\Qt5.12.3\Tools\mingw730_32\opt\bin 下的 libeay32.dll 和 ssleay32.dll 拷贝到 C:\Qt\Qt5.12.3\5.12.3\mingw73_32\bin 下面

提取64位文件

将 C:\Qt\Qt5.12.3\Tools\mingw730_64\opt\bin 下的 libeay32.dll 和 ssleay32.dll 拷贝到 C:\Qt\Qt5.12.3\5.12.3\mingw73_64\bin 下面

6、参考https配置验证下是否可以用https了

QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
qDebug() << accessManager->supportedSchemes();

注意:
笔者是OpenSSL 1.1.1g版本,下载OpenSSL的时候选用了最新版本win64 3.0.2,然而最终失败了,无奈我又只能去找了win64 OpenSSL 1.1.1g版本(OpenSSL1.1.1d/ 1.1.1m等其他版本没试过),按照如上操作,然后就成功了。附上截图如下:
QT https配置成功

举报

相关推荐

0 条评论