QT网络请求之QNetworkAccessManager类使用举例

QNetworkAccessManager 类用于协调网络操作,一旦创建一个 request,该类用来发出请求并发射信号来报告它的进度。

QNetworkRequest 类用于表示网络请求,它也充当一个与请求信息相关的通用容器,例如:任何头信息和使用的加密相关的信息。当一个 request 对象被构造时,指定的 URL 决定所用的协议。目前 HTTP、FTP 和本地文件 URLs 支持上传和下载。

QNetworkReply 类用于网络请求的响应,当一个 request 被发出后,QNetworkAccessManager 就会创建相应的响应,通过 QNetworkReply 提供的信号可以单独监听每个响应,或者使用 manager 的信号。由于 QNetworkReply 是 QIODevice 的一个子类,可以同步或异步处理响应;也就是说,阻塞或非阻塞操作。
在这里插入图片描述
使用举例
在这里插入图片描述

//qt_chrome_url.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtNetWork>
#include "ui_qt_chrome_url.h"

class qt_chrome_url : public QMainWindow
{
    Q_OBJECT

public:
    qt_chrome_url(QWidget *parent = Q_NULLPTR);
    ~qt_chrome_url();
private:
    void startWebset();
private slots:
    void slotReplyFinished(QNetworkReply* reply);
private:
    Ui::qt_chrome_urlClass ui;
    QNetworkAccessManager* _pNetworkManager;
};

//qt_chrome_url.cpp
#include <QDomDocument>
#include "qt_chrome_url.h"

qt_chrome_url::qt_chrome_url(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    _pNetworkManager = new QNetworkAccessManager(this);
    connect(_pNetworkManager, &QNetworkAccessManager::finished, this, &qt_chrome_url::slotReplyFinished);
    startWebset();
}
qt_chrome_url::~qt_chrome_url()
{
    if (_pNetworkManager)
    {
        delete _pNetworkManager;
        _pNetworkManager = NULL;
    }
}

void qt_chrome_url::startWebset()
{
    QNetworkRequest request;
    QString url = "http://coucc.com.cn/download/test.xml";//所下载文件的地址
    request.setUrl(QUrl(url));
    QNetworkReply* reply = _pNetworkManager->get(request);
}

void qt_chrome_url::slotReplyFinished(QNetworkReply* reply)
{
    qDebug() << "openFinished";
    QDomDocument doc;
    QByteArray data;
    data = reply->readAll();
    doc.setContent(data);
    //接下来是对获取得到的文件内容的读取……
}

其中,需添加Qt的模块Network。VS2019 添加Qt模块:右键解决方案->属性
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值