当前位置: 首页 > article >正文

Qt中使用QNetworkAccessManager类发送https请求时状态码返回0

前言

  • 在项目开发中,碰到一个问题,使用QNetworkAccessManager类对象发送https请求时,状态码一直返回0,抓包分析看请求响应也是正常的。费了好大劲终于搞定了,主要是两个原因导致的。

原因一:未设置支持SSL/TLS协议

  • 默认是不支持https协议的,需要在代码中手动设置下
  •   	QNetworkRequest reqDownloadPackage;
      	reqDownloadPackage.setUrl(QUrl("https://www.baidu.com"));
      	
      	// 设置支持Https请求
      	QSslConfiguration config = QSslConfiguration::defaultConfiguration();
      	// 设置tls协议自动协商
      	config.setProtocol(QSsl::AnyProtocol);
      	// 设置不校验对端证书
      	config.setPeerVerifyMode(QSslSocket::VerifyNone);
      	reqDownloadPackage.setSslConfiguration(config);
      	
      	// 发送get请求
      	QNetworkAccessManager *managerDownloadPackage = new QNetworkAccessManager(this);;
      	managerDownloadPackage->get(reqDownloadPackage);
    

原因二:QT版本太低,不支持高版本SSL/TLS协议

  • 如果按照以上方法设置后,状态码还是0,那就是Qt版本太低了,不支持高版本的SSL/TLS协议,只能切换Qt版本。
  • 建议使用Qt5.9以上的版本。

参考

  • Qt中https请求返回总是空值问题
  • Qt之SSL问题

http://www.kler.cn/a/136074.html

相关文章:

  • go-zero负载均衡实现原理
  • 【系统】Windows11更新解决办法,一键暂停
  • 【Jenkins】pipeline 的基础语法以及快速构建一个 jenkinsfile
  • 三七互娱Java开发150道面试题及参考答案(下)
  • 基于51单片机的交通灯设计—夜间、紧急、复位、可调时间、四个数码管显示
  • 揭秘区块链隐私黑科技:零知识证明如何改变未来
  • 【Android】画面卡顿优化列表流畅度六(终篇)
  • 通过easyexcel实现数据导入功能
  • Django 入门学习总结6 - 测试
  • 海康Visionmaster-环境配置:运行出现 Vm.Core.Solu tion 报错的解决方法
  • 开源简历生成器OpenResume
  • requests库出现AttributeError问题的修复与替代方法
  • uniapp小程序定位;解决调试可以,发布不行的问题
  • 麒麟 ZYJ 服务器软件适配 参考示例
  • Minikube Mac安装使用
  • WordPress画廊插件Envira Gallery v1.9.7河蟹版下载
  • C++学习笔记——C++ deque和vector的区别
  • Using Set Processing Effectively 有效地使用集合处理
  • CTF-PWN-小tips
  • 【2023云栖】陈守元:阿里云开源大数据产品年度发布
  • ​LeetCode解法汇总2300. 咒语和药水的成功对数
  • kubernetes v1.24.7 + docker
  • Map 和 WeakMap:JavaScript 中的键值对集合
  • EI论文程序:Adaboost-BP神经网络的回归预测算法,可作为深度学习对比预测模型,丰富实验内容,自带数据集,直接运行!
  • 数据库管理工具,你可以用Navicat,但我选DBeaver!
  • vue3 setup展示数据