Day28Qt实现http请求2022-01-06

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还有很多知识,例如报文格式,不同类型的请求等,更多网络知识,将在我的专栏《计算机网络》中分享更多积累与个人看法,供大家参考与讨论。

目标

本文将完成利用qt程序发出http请求,请求一个网络资源,并下载到本地。

效果

可以看到,请求了一张图片,jpg格式。进度条显示完毕之后,在本地目录中打开下载文件,如下,证明试验成功。

Day28Qt实现http请求2022-01-06

如下图,安装过程中要注意有一个选项,要选拷贝到其他目录。安装好后在安装目录找到 libcrypto-1_1-x64.dll libssl-1_1-x64.dll 两个文件 ,然后粘贴到
qt安装目录X:QtQt5.15.25.15.2msvc2019_64bin目录再次运行,错误消失,完美解决。

Day28Qt实现http请求2022-01-06

.cpp文件


Day28Qt实现http请求2022-01-06

来源:晓晓暮雨潇潇

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月15日
下一篇 2022年2月15日

相关推荐