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

news/2024/7/7 19:42:30

前言

  • 在项目开发中,碰到一个问题,使用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://lihuaxi.xjx100.cn/news/1805259.html

相关文章

Qtimer延时

功能:延时6秒后弹出message信息 头文件 public: QString str_pcjs; QTimer *my_timer;private slots: void handleTimeout();//超时后触发该函数cpp文件 //定义 my_timer new QTimer(this);// 连接槽函数connect(my_timer, SIGNAL(timeout()), this, SLOT(hand…

django理解01

接在Vue理解01后 项目创建 pycharm上下载django框架 在需要创建项目的文件夹终端django-admin startproject 项目名终端创建APPpython manage.py startapp app名注册APP,settings.py里INSTALLED_APPS下,增加一项:app名.apps.类名&#xff0…

单元测试实战(六)其它

为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试 单元测试实战&am…

java MessageDigest 实现加密算法

MessageDigest 是 Java 中的一个类,用于实现加密算法,例如 SHA-256、SHA-512、MD5 等。它可以将任意长度的数据转换为固定长度的哈希值,通常用于密码验证、数字签名等场景。 MessageDigest 类提供了以下常用方法: getInstance(St…

掌握未来技术趋势,Python编程引领人工智能时代

掌握未来技术趋势,Python编程引领人工智能时代 摘要:Python作为一种高级编程语言,在人工智能领域中扮演着越来越重要的角色。本文将通过介绍Python编程的特点、应用场景及发展前景,展望Python未来的发展趋势,并结合代…

从C语言的面向过程编程过渡理解面向对象编程风格中的封装

在C语言中,我们解决一个问题通常是采用在了解了问题如何解决后,设置一个一个的函数,依次调用实现不同的功能的函数从而解决问题,这种编程风格就叫做面向过程。  除此之外,还有一种叫做面向对象的编程风格被广泛的使用…

WPF中行为与触发器的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 一、行为 (Behaviors) behaviors的简单测试 <Window x:Class"Test_05.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…

Vue3 toRef函数和toRefs函数

当我们在setup 中的以读取对象属性单独交出去时&#xff0c;我们会发现这样会丢失响应式&#xff1a; setup() {let person reactive({name: "张三",age: 18,job: {type: "前端",salary:10}})return {name: person.name,age: person.age,type: person.jo…