qt配置https请求

qt配置https请求

老套路,一图胜千言,在ui界面请求搜狗,看看能返回什么内容

平台信息

- 开发机操作系统 【win11】
- qt版本 【5.13.2 】
- 编译器 【Mingw32(qt自带安装) 】
- 目标平台【win32】,win7及win7以上x86/64 windows平台可运行

UI创建

创建项目,拖控件等等基础操作就不演示了,这个专栏的目标受众是解决项目中的问题,初学者补齐基础再看也不迟

openssl包拷贝

这一步应该难倒最多人的的步骤,网上众说纷纭,有用的凤毛麟角,何谓有用,按照帖子的步骤操作完,请求一个https地址能返回内容,而不是直接走到加密验证那一步就被打回来了。
正题开始,如果你安装了opensource qt那么这个包就在你的机器上,不用去openssl官网下载,编译。下面贴地址:

将上述图片位置的两个dll复制到下图的地址,为什么复制到下图的地址呢,因为下图就是我们再qt creator中点那个三角形运行项目时候的地址,那如使用windeployqt打包了项目,同样,这两个包也是需要拷贝过去的。

上述的地址是我的安装位置,在你的电脑上需要更换到你的地址,相信能看这篇帖子你一定知道这些

编写https请求代码,此处仅演示click槽函数下的代码,因为我会将所有代码都写在这个函数下,此处不考虑编程规范,只考虑怎样让阅读者更快理解怎么解决问题,以应用到自己的项目当中。

贴代码

cpp 复制代码
void MainWindow::on_btn_request_clicked()
{
    QByteArray sendDate= "asdf";
    QNetworkAccessManager *manager=new QNetworkAccessManager();

    QNetworkRequest request;
    request.setUrl(ui->txt_url->text());
//    QSslConfiguration sslConfig = request.sslConfiguration();
//    sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
//    sslConfig.setProtocol(QSsl::AnyProtocol);
//    request.setSslConfiguration(sslConfig);

    //发送异步post请求
    QNetworkReply *reply =  manager->post(request, sendDate);
    qDebug() << manager->supportedSchemes();
    // 只连接当前reply对象的finished信号
    connect(reply, &QNetworkReply::finished, this, [this, reply]() {
        QByteArray responseData = reply->readAll();                             // 获取服务器返回的内容
        int httpStatusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
        qDebug()<<"http返回内容长度:"<<QString::number(responseData.length());
        ui->txt_respone->setPlainText(responseData);
        reply->deleteLater();                                                   // 释放 reply 对象
    });

}

可以看到,请求是没问题的,只是没有有效传参,返回了错误页,但绝是来自搜狗的。

此处在演示一下如果删掉刚才拷贝到运行目录下的包,会是什么结果,可以看到直接就报错了加密未通过。

相关推荐
企微自动化几秒前
企业微信外部群自动化系统的异常处理机制设计
开发语言·python
墨&白.1 分钟前
如何卸载/更新Mac上的R版本
开发语言·macos·r语言
技术小甜甜10 分钟前
[Python] 使用 Tesseract 实现 OCR 文字识别全流程指南
开发语言·python·ocr·实用工具
leo__52015 分钟前
MATLAB 实现 基分类器为决策树的 AdaBoost
开发语言·决策树·matlab
老朱佩琪!20 分钟前
Unity原型模式
开发语言·经验分享·unity·设计模式·原型模式
毕设源码-郭学长21 分钟前
【开题答辩全过程】以 基于JAVA的车辆违章信息管理系统设计及实现为例,包含答辩的问题和答案
java·开发语言
while(1){yan}21 分钟前
UDP和TCP的核心
java·开发语言·网络·网络协议·tcp/ip·udp
后端小张26 分钟前
【Java 进阶】深入理解Redis:从基础应用到进阶实践全解析
java·开发语言·数据库·spring boot·redis·spring·缓存
木心爱编程34 分钟前
【Qt 5.14.2 新手实战】QTC++入门筑基——10 分钟做个文本编辑器:QLineEdit + QTextEdit 核心用法
java·c++·qt
2501_9151063242 分钟前
用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
android·ios·小程序·https·uni-app·iphone·webview