QT 网络编程之https
HTTP
超文本傳輸協(xié)議,是一個(gè)基于請(qǐng)求與響應(yīng),無(wú)狀態(tài)的,應(yīng)用層的協(xié)議,常基于TCP/IP協(xié)議傳輸數(shù)據(jù),互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP的初衷是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)的介紹:
以安全為目標(biāo)的 HTTP 通道,在HTTP的基礎(chǔ)上通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。HTTPS 在HTTP 的基礎(chǔ)下加入SSL
層,HTTPS 的安全基礎(chǔ)是 SSL,因此加密的詳細(xì)內(nèi)容就需要 SSL。
下面直接上代碼:
// 頭文件 QNetworkAccessManager* m_AccessManager; QNetworkRequest m_Request;public slots:// 用來(lái)接收返回結(jié)果(異步的)void replyFinishedRes(QNetworkReply *reply); // cpp m_AccessManager = new QNetworkAccessManager(this); qDebug() << QSslSocket::supportsSsl(); qDebug() << m_AccessManager->supportedSchemes(); // 查看本地支持的協(xié)議 connect(m_AccessManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinishedRes(QNetworkReply *)));如果本地不支持,不要著急,在QT目錄下或者電腦其他地方搜索 libeay32.dll和ssleay32.dll將這兩個(gè)dll拷貝到Qt12.0\5.12.0\mingw73_64\bin目錄下就可以了
如果出錯(cuò)可以在replyFinishedRes(QNetworkReply *)槽函數(shù)中進(jìn)行檢查,以及是哪個(gè)網(wǎng)址返回的數(shù)據(jù)
代碼:
if(reply->error() != QNetworkReply::NoError) {// 錯(cuò)誤查看QNetworkReply::NetworkError error = reply->error();QString strError = "";strError += "Https URL: ";strError += reply->url().toString();switch (error){case QNetworkReply::ConnectionRefusedError:strError += QString("錯(cuò)誤原因: 遠(yuǎn)程服務(wù)器拒絕連接; 錯(cuò)誤代碼: ");qDebug() << strError << reply->error();break;case QNetworkReply::HostNotFoundError:strError += QString("錯(cuò)誤原因: 遠(yuǎn)程主機(jī)名未找到(無(wú)效主機(jī)名); 錯(cuò)誤代碼: ");qDebug() << strError << reply->error();break;case QNetworkReply::TooManyRedirectsError:strError += QString("錯(cuò)誤原因: 請(qǐng)求超過(guò)了設(shè)定的最大重定向次數(shù); 錯(cuò)誤代碼: ");qDebug() << strError << reply->error();break;default:strError += QString("錯(cuò)誤原因: 未知錯(cuò)誤; 錯(cuò)誤代碼: ");qDebug() << strError << reply->error();break;}return; }QByteArray data = reply->readAll(); // 查看是哪個(gè)網(wǎng)址返回的數(shù)據(jù) if(m_strHttps_URL == reply->url().toString()) {getjson(data); }reply->deleteLater();總結(jié)
以上是生活随笔為你收集整理的QT 网络编程之https的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端小知识点(1):undefined和
- 下一篇: [环境搭建]SDN网络感知服务与最短路径