QT 网络编程之https

HTTP

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)的介绍:

以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL
层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

下面直接上代码:

// 头文件
QNetworkAccessManager* m_AccessManager;
QNetworkRequest m_Request;

public slots:
	// 用来接收返回结果(异步的)
    void replyFinishedRes(QNetworkReply *reply);
// cpp
m_AccessManager = new QNetworkAccessManager(this);
qDebug() << QSslSocket::supportsSsl();					
qDebug() << m_AccessManager->supportedSchemes();			// 查看本地支持的协议
connect(m_AccessManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinishedRes(QNetworkReply *)));

如果本地不支持,不要着急,在QT目录下Qt5.14.2\Tools\mingw730_64\opt\bin或者电脑其他地方搜索 libeay32.dllssleay32.dll将这两个dll拷贝到Qt5.14.2\5.14.2\mingw73_64\bin目录下就可以了

高版本下如果还不可以,请继续搜索 libcrypto-1_1-x64.dlllibssl-1_1-x64.dll,继续添加到 Qt5.14.2\5.14.2\mingw73_64\bin目录下

如果出错可以在replyFinishedRes(QNetworkReply *)槽函数中进行检查,以及是哪个网址返回的数据

代码:

if(reply->error() != QNetworkReply::NoError)
{
	// 错误查看
    QNetworkReply::NetworkError error = reply->error();
    QString strError = "";
    strError += "Https URL: ";
    strError += reply->url().toString();
    switch (error)
    {
    case QNetworkReply::ConnectionRefusedError:
        strError += QString("错误原因: 远程服务器拒绝连接; 错误代码: ");
        qDebug() << strError << reply->error();
        break;
    case QNetworkReply::HostNotFoundError:
        strError += QString("错误原因: 远程主机名未找到(无效主机名); 错误代码: ");
        qDebug() << strError << reply->error();
        break;
    case QNetworkReply::TooManyRedirectsError:
        strError += QString("错误原因: 请求超过了设定的最大重定向次数; 错误代码: ");
        qDebug() << strError << reply->error();
        break;
     default:
        strError += QString("错误原因: 未知错误; 错误代码: ");
        qDebug() << strError << reply->error();
        break;
	}
	return;
}
    
QByteArray data = reply->readAll();
// 查看是哪个网址返回的数据
if(m_strHttps_URL == reply->url().toString())
{
    getjson(data);
}

reply->deleteLater();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值