Qt 5——使用http协议通信

文章目录

  • Qt中使用http协议通信
    • Qt中如何使用http协议通信
    • QNetworkAccessManager 类
    • QNetworkRequest类
    • QNetworkReply 类
    • 代码示例

Qt中使用http协议通信

Qt中如何使用http协议通信

  • QNetworkAccessManager类允许应用程序发送网络请求和接收网络应答
  • Network Access API都是围绕着一个QNetworkAccessManager对象构造的,这个对象包含着发送请求的一些通用配置和设置。它包含着代理和缓存的配置,以及和这些事物相关的一些信号,并且应答信号可以作为我们检测一个网络操作的进度。
  • 一个QNetworkAccessManager对于一整个Qt应用程序来说已经足够了!
  • 一旦一个QNetworkAccessManager对象被创建了,那么应用程序就可以使用它在网络上发送请求。
  • 它提供了一组标准的函数,可以承载网络请求和一些可选的数据,并且每一个请求返回一个QNetworkReply对象。该返回的对象包含着返回的请求应带的所有数据。

QNetworkAccessManager 类

  • QNetworkAccessManager将会把它受到的请求排队。并行执行的请求数量是依赖于协议的。
  • 目前,对于桌面平台的HTTP协议,对于一个主机/端口的组合,可6个请求并行执行。
  • 发送头请求
    get
    post

QNetworkRequest类

Network Access API的一部分,并且这个类包含着在网络上发送请求的必要信息

  • 它包含了一个URL和一些可以用来修改请求的附加信息。
  • 将需要发送的http请求协议初始化到该类中
    请求头
    数据
    url

QNetworkReply 类

QNetworkAccessManage返回的一个对象, 请求完成之后, 需要删除该对象

  • 通过该对象, 读server返回的 数据
    readyRead()
    finished();
    readall()

代码示例

    // 需要一个mamager对象, 做get ,post
    QNetworkAccessManager* manager = new QNetworkAccessManager(this);
    // 准备工作 - 初始化一个QNetworkRequest
    QNetworkRequest res;
    // 设置头 - 浏览器
    res.setHeader(QNetworkRequest::UserAgentHeader,
                  "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
    res.setUrl(QUrl("http://www.baidu.com:80"));
    QNetworkReply* reply = manager->get(res);
    // 读服务器回写的数据
    connect(reply, &QNetworkReply::readyRead, this, [=]()
    {
        // 读数据
        QVariant str = reply->header(QNetworkRequest::LocationHeader);
        // 数据 - 不包括头
        QByteArray data = reply->readAll();
        qDebug() << data;
        qDebug() << str.toString();
    });

你可能感兴趣的:(网盘项目,Qt,#,HTTP协议)