热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QT客户机上httpsget请求JSON解析无数据

项目中使用https抓天气数据,在测试环境使用正常,客户机部分电脑无法使用,部分电脑正常。开始以为JSON解析出错,于是:

项目中使用https抓天气数据,在测试环境使用正常,客户机部分电脑无法使用,部分电脑正常。

开始以为JSON解析出错,于是:

QJsonParseError err; //判断是否为cjson数据
WriteFile( err.errorString(),"C:/error.txt");

在客户机上运行后返回:illegal value

根据错误回去检查JSON数据

QJsonDocument doc = QJsonDocument::fromJson(buf.toUtf8(),&err);

WriteFile( QString(doc.toJson()),"C:/error.txt");

惊讶的发现数据为空,抱着怀疑去查看了 QNetworkReply 的回复值

QString buf = reply->readAll(); //cJSON数据放入缓冲区,定义为字符串
WriteFile( buf,"C:/error.txt");
WriteFile( reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).value(),"C:/error.txt");

果然发现应答为空,立即打印错误信息

WriteFile( reply->errorString(),"C:/error.txt");

提示 error creating ssl context()

考虑到在测试环境使用正常,客户机部分电脑无法使用,部分电脑正常等原因,可能是windows系统缺少openssl的原因。Qt支持https请求需要配置openssl环境,Qt默认是不支持SSl认证的,
检测Qt支持的协议

for (int i=0;i{
WriteFile( manager.supportedSchemes().at(i),"C:/error.txt");
}

经在客户环境下测试确认了是这个原因。

配置文件:库文件 libeay32.dll和ssleay32.dll。下载libeay32.dll 和 ssleay32.dll两个库文件,将其拷贝到程序生成目录下(即生成exe的同级目录)或者拷贝到QtNetwork模块的库文件目录中。

代码配置:

QNetworkRequest request(url);
QSslConfiguration cOnf= request.sslConfiguration();
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
conf.setProtocol(QSsl::TlsV1SslV3);
request.setSslConfiguration(conf);
// request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
manager.get(request);

Win32/Win64 OpenSSL Screenshot下载地址    Win32 OpenSSL进行安装后,将bin目录下面的 libeay32.dll和ssleay32.dll库拷贝出来放到生成程序exe同级目录下即可。

或者搜索本机.\Qt\Qt5.11.0\Tools\QtCreator\bin目录下,有的话直接拷贝一份即可,省安装这么麻烦了。

 

如果还是不能正常运行,请检查运行环境,需要安装Microsoft Visual C++ 2013。


版权声明:本文为qq_40843129原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40843129/article/details/106131730
推荐阅读
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
Th川_546
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有