Qt Network(三)http请求
介绍
1.network模块
首先,简单介绍一下network模块。Qt Network模块用来编写基于TCP/IP的 络程序,其中提供了较低层次的类,比如QTcpSocket、QTcpServer、QUdpSocket等,来表示低层次的 络概念;还有高层次的类,比如QNetworkRequest、QNetworkReply和QNetworkAccessManager,使用通用的协议来执行 络操作。Qt的 络模块是一个庞大的体系,还有 络代理类QNetworkProxy类,承载管理QNetworkConfigurationManager类、QNetworkSession类以及涉及通信安全的QSsl等。关于这些内容,敬请关注《QT积累——小项目》部分,将会陆续制作。
2. 络访问接口
络访问接口是一组执行常见的 络操作的类的集合。该接口在特定的操作和协议(例如,http)上提供了一个抽象层,开发者只需要使用其提供的类、函数和信 即可完成操作,而不需要知道底层是如何实现的。 络请求是由QNetworkRequest类来表示,它也作为与请求有关的信息的容器(也就是一个集合了与“请求”相关属性及方法的类对象)。QNetworkAccessManager类用来协调 络操作,可以调度创建好的请求,并发射信 来 告进度。(也是一个类对象,表征的是 络操作) 络请求的应答使用QNetworkReply类表示,他会在请求调度完成时由QNetworkAccessManager创建。QNetworkReply提供的信 可以用来单独监视每一个应答,也就是这个类对象表征的应答的信息。
3.介绍相关术语
简单介绍与 络操作的相关术语,让各位清楚自己正在做的是什么事情。WWW既是万维 , 上好多的定义,有的说web服务器就是万维 ,有的说互相链接的超文本组成的系统,百度百科中说,WWW (World Wide Web,万维 )是存储在Internet计算机中、数量巨大的文档的集合。抽象的东西似乎都没有准确的定义,但事实上万维 是一个具象的东西。我的理解是,符合以下特征就是万维 。首先数量巨大的文档的集合存储在WEB服务器中;其次,这些文档称为页面,它是一种超文本(Hypertext)信息,可以用于描述超媒体。文本、图形、视频、音频等多媒体,称为超媒体(Hypermedia);再次,Web上的信息是由彼此关联的文档组成的,而使其连接在一起的是超链接;
超文本(Hypertext)是由一个叫做 页浏览器(Web browser)的程序显示;最后,客户端使用http协议、https协议访问服务器,服务器能够响应这些请求,给出应答。符合这些特征的C/S模型就是万维 。
在万维 中,任何一个信息资源都有统一的并且在 上唯一的地址,这个地址就叫做URL,又称同一资源定位符。而HTTP协议是浏览器与WEB服务器交互遵从的协议,这个协议是基于TCP协议的,称为超文本传输协议。可以说,www是建立在http上完成通信的。互联 和万维 的区别更像是,互联 是基础,理论上可以在互联 中的任何两个终端都可以相互传输数据;万维 是应用,在互联 ,一端是客户端,一端是服务器,由客户端向服务器发出请求(http协议),服务器做出应答的(超文本)的应用。类似的还有FTP应用, 上聊天应用等都不是万维 ,但是都在用互联 。有关于http还有很多知识,例如 文格式,不同类型的请求等,更多 络知识,将在我的专栏《计算机 络》中分享更多积累与个人看法,供大家参考与讨论。
目标
效果
可以看到,请求了一张图片,jpg格式。进度条显示完毕之后,在本地目录中打开下载文件,如下,证明试验成功。
如下图,安装过程中要注意有一个选项,要选拷贝到其他目录。安装好后在安装目录找到 libcrypto-1_1-x64.dll libssl-1_1-x64.dll 两个文件 ,然后粘贴到
qt安装目录X:QtQt5.15.25.15.2msvc2019_64bin目录再次运行,错误消失,完美解决。
.cpp文件
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!