森林笔记:Qt网络编程篇(三)--Http

  1. 使用

【1】网络访问接口是一组执行常见网络的类的集合。
【2】该接口在特定的操作和协议(通过HTTP获取和发送数据)上提供了一个抽象层,开发者只需要使用其提供的类、函数和信号即可完成操作,而不需要知道底层是如何实现的。
【3】C++ class

  • 网络请求由QNetworkRequest类来表示,它也作为请求相关的信息(例如,任何头信息和使用加密)的容器。在创建请求对象时指定的URL决定请求使用的协议,目前支持HTTP、Ftp和本地文件URL的上传和下载。
  • 协调网络操作:QNetworkAccessManager 类 可以调度创建好的请求,并发射信号来报告进度
  • 网络请求应答:QNetworkReply 类 ,
  • 请求调到完成时由QNetworkAccessManager 类 创建,
    QNetworkReply提供的信号可以用来单独监视每一个应答,也可以使用 QNetworkAccessManager信号实现。这样就可以丢弃对应答对象的引用。
    因为QNetworkReply 是 QIODevice 的子类 ,应答可以使用同步或者异步的方式来处理,比如阻塞和非阻塞操作。
  1. 请求方式
    HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是get,put,post,delete。
    URL(资源描述符),一个URL地址,它用于描述一个网络上的资源。

//【1】查:发布请求以获取目标请求的内容
QNetworkReply * get(const QNetworkRequest &request)

//发布请求以获取请求的网络标头,并返回一个新的QNetworkReply对象,该对象将包含此类标头。
QNetworkReply *head(const QNetworkRequest &request)

//【2】改:向请求指定的目的地发送httpPost请求,将数据设备的内容将上传到服务器
QNetworkReply * post(const QNetworkRequest &request, QIODevice *data)

//【3】增:将数据的内容上传到目标请求,并返回一个新的QNetworkReply对象,该对象将打开以供回复
//对于http,此请求将发送一个PUT请求,大多数服务器不允许
QNetworkReply * put(const QNetworkRequest &request, QIODevice *data)

//【4】删:发送请求以删除由请求的url标识的资源
QNetworkReply *deleteResource(const QNetworkRequest &request)

总结:
【1】http (超文本传输协议) 是一个基于请求与响应模式的,无状态的,应用层的协议,常基于TCP的连接方式
【2】特点:
请求响应模型;请求和响应必须成对;先有请求后有响应;http 默认端口 80
【3】在http 1.0 的三种请求方式:get、post、head、
区别:
get , 通过URL提交数据,有字节限制,一般而言提交的数据至多1024字节。
post ,数据放置在html header 内提交,POST则没有字节限制
head , head请求和get请求类似,但是HEAD并不返回消息体,一个HEAD请求的响应可被缓存.响应中的信息可能用来更新之前缓存的实体。
//参考:https://blog.csdn.net/qq89115156/article/details/98493354?biz_id=102&utm_term=http%E7%9A%84%E5%AE%9A%E4%B9%89&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-6-98493354&spm=1018.2118.3001.4187

  1. 实践Demo–从网上下载文件(图片)并显示到QLabel上
//MainWindow.h

#include <QMainWindow>
#include<QNetworkAccessManager>
#include<QNetworkReply>
#include<QUrl>
#include<QFile>
QT_BEGIN_NAMESPACE
namespace Ui {
    class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void DoneRequest(QUrl url);
private slots:
    void on_pushButton_clicked();
    void slotReadyread();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值