【QT笔记】HTTP

1.Qt OpenSSL

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

1.1.查看QT所支持的OpenSSL版本

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

不支持时打印如下:

false "OpenSSL 1.1.1g  21 Apr 2020" ""

支持openSSL时打印如下:

true "OpenSSL 1.1.1g  21 Apr 2020" "OpenSSL 1.1.1t  7 Feb 2023"

那对应的版本就是OpenSSL 1.1.1d 或者OpenSSL 1.1.1g 。一定要下载对应的版本。

1.2.下载安装OpenSSL库

  1. Qt必须使用5.12或更高版本,OpenSSL一定要对应版本,版本不同都可能导致失败;
  2. 下载OpenSSL库:http://slproweb.com/products/Win32OpenSSL.html,选择32位和64位Light版本;
    在这里插入图片描述
  3. 提取32位文件将OpenSSL 32位的bin目录里的 libcrypto-1_1.dll 和 libssl-1_1.dll 拷贝到D:\develop\qt\5.15.2\mingw81_32\bin 下面;
  4. 提取64位文件,将OpenSSL 64位的bin目录里的 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 拷贝到 D:\develop\qt\5.15.2\mingw81_64\bin 下面
    在这里插入图片描述
  5. 在发送请求前设置一下:
QNetworkRequest request(url);
QSslConfiguration conf = request.sslConfiguration();
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
conf.setProtocol(QSsl::AnyProtocol);
request.setSslConfiguration(conf);

1.3.程序添加openssl库

支持HTTPS请求需要配置OpenSSL环境,Qt默认是不带SSl认证的,直接访问HTTPS会有错误信号。 需要对应的库文件 libcrypto-1_1.dll和libssl-1_1.dll,将这两个库文件拷贝到程序生成目录下(即生成exe的同级目录)或者拷贝到QtNetwork模块的库文件目录中。

注意:
在新建项目的时候,因为我只装了64位的OpenSSL,所以如果图中MinGW32和MinGW64都勾选的话,https也出不来,要么只勾选MinGW32或者MinGW64,要么就把64和32位的OpenSSL都装上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值