已解决
Qt中使用QNetworkAccessManager类发送https请求时状态码返回0
来自网友在路上 160860提问 提问时间:2023-11-19 19:00:55阅读次数: 60
最佳答案 问答题库608位专家为你答疑解惑
前言
- 在项目开发中,碰到一个问题,使用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问题
查看全文
99%的人还看了
相似问题
- flink1.13.6版本的应用程序(maven版)
- 技术分享| gcc版本升级到5.2
- 基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践
- 解决requests 2.28.x版本SSL错误:证书验证失败
- UE5和UE4版本更新重大改变汇总。
- Docker build报错总结,版本过新大避雷!
- K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录
- Mongodb3.4升级高版本mongoTemplate.executeCommand报错The cursor option is required
- onnx模型转换opset版本和固定动态输入尺寸
- centos安装指定版本docker
猜你感兴趣
版权申明
本文"Qt中使用QNetworkAccessManager类发送https请求时状态码返回0":http://eshow365.cn/6-39542-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: redis运维(十一) python操作redis
- 下一篇: 打不开github网页解决方法