QT笔记——QT支持Https
我們想要實現(xiàn)支持https的請求,在一開始,不做任何操作下,是不支持https的請求的
我的環(huán)境:vs2019 + qt 5.12.2
其他版本可能不清楚
什么是https:是由SSL + HTTP協(xié)議構成的超文本加密協(xié)議,比http協(xié)議更加的安全
QT += network
#include <QSslSocket> #include <QNetworkAccessManager> QNetworkAccessManager manager; bool bSupp = QSslSocket::supportsSsl(); QString buildVersion = QSslSocket::sslLibraryBuildVersionString(); QString version = QSslSocket::sslLibraryVersionString(); qDebug() << bSupp << buildVersion << version << endl;qDebug() << QStringLiteral("支持發(fā)送數(shù)據(jù):") << manager.supportedSchemes();一:首先,我們要獲取對應的QT 版本 的OpenSSL
下面是編譯源碼的過程,我們可以 自己下載對應的dll:OpenSSL下載庫
然后直接應用 庫的,別人的應用:應用openssl
二:我們需要下載對應 版本 的OpenSSL
OpenSSL舊地址下載
三:下載配置編譯環(huán)境及工具ActivePerl **
ActivePerl 官網(wǎng)
因為我在官方下載,沒下載成功,就隨便找了一個網(wǎng)址下載的,百度搜ActivePerl 5.28 安裝**
不是官網(wǎng)鏈接,但是配置成功了,默認安裝即可
四:檢查我們下載的 ActivePerl
五:編譯我們的OpenSSL庫
我們需要打開我們的VS2019 命令行 開發(fā)者平臺:
鼠標右鍵 :管理員身份運行 該命令行工具
進入我們的前面下載的openssl庫, 配置要Perl編譯的位數(shù):
cd openssl庫路徑 perl Configure VC-WIN64A no-asm --perfix="D:\\thirdLibrary\\openssl-1.0.2p"release版本:VC-WIN64A代表是64位release 庫;VC-WIN32 代表是32位release庫
debug版本:debug VC-WIN64A ; debug VC-WIN32A
no-asm:編譯過程中不使用匯編代碼加快編譯過程。
–prefix=路徑指定生成路徑
執(zhí)行編譯:
ms\do_win64a
生成makefile,64位:ms\do_win64a.bat ;32為:ms\do_ms.bat
nmake -f ms\ntdll.mak
執(zhí)行完:
nmake -f ms\ntdll.mak install
測試:
nmake -f ms\ntdll.mak test
編譯動態(tài)庫:
nmake -f ms\ntdll.mak
編譯靜態(tài)庫:
nmake -f ms\nt.mak
測試動態(tài)庫:
nmake -f ms\ntdll.mak test
測試靜態(tài)庫:
nmake -f ms\nt.mak test
安裝動態(tài)庫:
nmake -f ms\ntdll.mak install
安裝靜態(tài)庫:
nmake -f ms\nt.mak install
清除上次動態(tài)庫的編譯,以便重新編譯:
nmake -f ms\ntdll.mak clean
清除上次靜態(tài)庫的編譯,以便重新編譯:
nmake -f ms\nt.mak clean
–cross-compile-prefix 交叉編譯參數(shù)
–prefix=DIR 安裝目錄設置,make install指令會安裝到指定目錄。
–debug 使用調(diào)試符號和零優(yōu)化級別構建OpenSSL
–release 在不調(diào)試符號的情況下構建OpenSSL。這是默認設置
–libdir=DIR 安裝目錄樹頂部(請參閱–prefix選項)下將安裝庫的目錄的名稱。
默認情況下,這是“l(fā)ib”。
請注意,僅在Windows上,.lib文件將存儲在此位置。 dll文件將始終安裝到“bin”目錄。
–openssldir=DIR OpenSSL配置文件的目錄,以及默認證書和密鑰存儲。
默認設置為:
Unix:/usr/local/ssl
Windows:C:\Program Files\Common Files\SSL或C:\Program Files(x86)\Common
Files\SSLOpen
VMS:SYS$COMMON:[OPENSSL-COMMON]
no-tests 不要構建測試程序或運行任何測試 no-shared 不要創(chuàng)建共享庫,只創(chuàng)建靜態(tài)庫。
將 D:\QT5.12wj\Tools\mingw730_64\opt\bin
中的libeay32.dll 和 ssleay32.dll 復制到
D:\QT5.12wj\5.12.2\msvc2017_64\bin中
這是配置好后顯示的 可支持發(fā)送數(shù)據(jù):
7:測試我們的https
測試https網(wǎng)址
打印如下:
其中遇到過這樣的問題:(一臺電腦沒有出現(xiàn),另外一臺電腦出現(xiàn),上面同樣的操作,不知道為什么會有,具體原因未知)
這個ICLS Client:百度查找 是設備驅(qū)動文件
解決方案:將libeay32.dll 放入到.exe文件中 發(fā)現(xiàn)解決問題了 ,可以不用加ssleay32.dll
然后就支持https了
參考博客:
感謝以下博客
鏈接一
鏈接二
鏈接三
鏈接四
鏈接五
總結
以上是生活随笔為你收集整理的QT笔记——QT支持Https的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排队论---多服务台负指数分布排队系统的
- 下一篇: C++ MFC深入详解之----模态对