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

前言

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

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

  • 默认是不支持https协议的,需要在代码中手动设置下
c 复制代码
  	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以上的版本。

参考

相关推荐
赵庆明老师12 分钟前
VS2026扩展插件Visual Commander
java·开发语言
额呃呃16 分钟前
信号量唤醒线程的实际机制
java·开发语言·jvm
程序员阿鹏21 分钟前
怎么理解削峰填谷?
java·开发语言·数据结构·spring·zookeeper·rabbitmq·rab
ht巷子24 分钟前
Qt:容器类的迭代
开发语言·c++·qt
shhpeng24 分钟前
Go语言中 的 defer 语句
开发语言·后端·golang
不惑_29 分钟前
通俗理解多层感知机(MLP)
开发语言·人工智能·python·深度学习
小徐Chao努力34 分钟前
【Langchain4j-Java AI开发】02-模型参数配置与调优
java·开发语言·人工智能
一路往蓝-Anbo35 分钟前
【第14期】裸机中断优先级:抢占与嵌套的逻辑
c语言·开发语言·stm32·单片机·物联网
bjxiaxueliang1 小时前
一文详解Cpp多线程编程:从传统pthread到现代thread实践指南
java·开发语言·jvm
QQ_4376643141 小时前
C++11并发编程
开发语言·c++