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

这篇具有很好参考价值的文章主要介绍了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问题

文章来源地址https://www.toymoban.com/news/detail-774499.html

到了这里,关于Qt中使用QNetworkAccessManager类发送https请求时状态码返回0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue向api请求不到数据,返回了一个html页面,使用postman发送请求却可以得到数据

    在vue.config.js中配置了代理 然后向这个接口传入参数发送post请求,希望获取数据 在使用axios发送post请求时,却发现得不到数据,返回了一个页面 输出: 但是使用postman向api发送请求却可以得到数据 这里其实是因为后端会对请求的ip地址做一个分析,如果直接使用localhost:8080访

    2024年02月11日
    浏览(44)
  • java使用hutool工具类发送http或者https请求太香啦

    我们使用java内置的http工具实现远程调用的时候,都是用try catch包一堆代码,巨难受,今天看见有人使用hutool工具类那是天简单了呀,具体操作如下: 1,引入依赖 2, 如果不需要设置其他什么头信息,代码: 如果是https请求直接换url里面的http就行 返回信息格式: {\\\"code\\\":200

    2024年02月14日
    浏览(35)
  • 使用Python的requests库发送HTTPS请求时的SSL证书验证问题

    问题描述 使用python的requests库去发送https请求,有时候不设置verify=False不报错,有时候又报错。 问题原因 使用Python的requests库发送HTTPS请求时,设置verify=False参数可以跳过SSL证书验证。默认情况下,requests库会验证SSL证书以确保请求的安全性。然而,在某些情况下,可能会出现

    2024年02月17日
    浏览(50)
  • Qt 使用HTTP请求网络API并接收返回的JSON格式的数据

    引入网络模块: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    浏览(50)
  • postman发送https post请求

    postman发送https post请求 1、点击File选择Setting 2、General中选择ssl认证关闭 3、Certificates中选择点击Add Certificate 4、输入请求服务的IP,点击add 5、选择File new postman window 6、选择请求方式为post 填入url ,request 输入headers参数和依赖token 7、输入body中的值 ,如发送json选择raw,选择js

    2024年02月11日
    浏览(57)
  • 关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态

    问题来源: 使用RESTful风格发送带有特殊符号(如:点、大括号等)的请求,当使用Nginx做地址映射时会返回报\\\"HTTP Status 400-Bad Request\\\"的错误,这个时候我们需要对Nginx的映射方式做一下调整。 Nginx调整完发现跳转后又报了同样的错误,是因为SpringBoot也需要做兼容 如果请求地址是

    2024年02月15日
    浏览(44)
  • 发送https请求并跳过ssl证书验证

     平台服务调用https接口报错: org.springframework.web.client.ResourceAccessException: I/0 error on PoST request for ?\\\"https://XXXXX\\\": java.security.centp.CertificateException: No subject alternative names present; nested exception is javax.net.ssl..SSLHandshakeException: java.security.cert.CertificateException: No subject alternative namesspresent 第

    2024年02月16日
    浏览(47)
  • ruoyi 后端发送http/https post请求

    1.1 JSONObject转换为String类型后进行发送 1.1.1头部请求添加:` conn.setRequestProperty(“Content-Type”, “application/json”); ` 1.1.2 发送操作主要部分 2.1 JSONObject转换为String类型后进行发送 2.1.1头部请求添加:` conn.setRequestProperty(“Content-Type”, “application/json”); ` 2.1.2 发送操作主要部分

    2024年02月11日
    浏览(44)
  • 后端请求的时候返回的状态码有几种,代表什么意思

             2xx表示成功处理了请求,200请求已完成,202服务器接收未处理,204、205:服务器处理了但是没有任何返回,206:处理了部分get请求         3xx请求被重定向,需要进一步操作         4xx:请求码出错影响了请求,400:服务器不理解,401:要求身份验证,404:

    2024年02月12日
    浏览(38)
  • HTTP 和 HTTPS(请求响应报文格式 + 请求方法 + 响应状态码 + HTTPS 加密流程 + Cookie 和 Session)

    HTTP 全称 “ 超文本传输协议 ”,是一种基于传输层 TCP 协议实现的应用非常广泛的 应用层协议 我们平时打开一个网站,就是通过 HTTP 协议来传输数据的 当我们在浏览器中访问一个 “ 网址 ”(URL),浏览器就会给这个 URL 的服务器发送一个 HTTP 请求,服务器返回一个 HTTP 响

    2023年04月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包