qt -- 网络操作类(QNetworkRequest、QNetworkAccessManager、QNetworkReply)

目录

网络操作的类

QNetworkRequest类

QNetworkAccessManager类

QNetworkReply类


网络操作的类

主要是QNetworkRequest、QNetworkReply和 QNetworkAccessManager。

QNetworkRequest类

通过一个URL地址发起网络协议请求,也保存网络请求的信息。目前支持HTTP、FTP和本地文件上传和下载等。

QNetworkAccessManager类

用于协调网络操作。在QNetworkRequest 发起一个网络请求后,QNetworkAccessManager类负责发送网络请求,创建网络响应。该类还协调cookies的使用,身份验证请求,及其代理的使用等。

QNetworkAccessManager * manager = new QNetworkAccessManager ( this ); 

connect(manager , &QNetworkAccessManager::finished, this, &MyClass::replyFinished); 

manager->get(QNetworkRequest(QUrl("http://qt-project.org"))); 

QNetworkReply类

表示网络请求的响应。由 QNetworkAccessManager在发送一个网络请求后创建一个网络响应。QNetworkReply 提供的信号finished()、readyRead()和 downloadProgress()可以监测网络响应的执行情况,执行相应操作。QNetworkReply是QIODevice的子类,所以QNetworkReply支持流读写功能,也支持异步或同步工作模式
注意:不要使用deleteLater()删除连接到该信号(finished())槽中的对象。

readyRead()信号继承自QIODevice类,每当有新的数据可以读取时,都会发射该信号;

每当网络请求的下载进度更新时都会发射downloadProgress()信号,它用来更新进度条。

downloadProgress(qint64, qint64)

ui->progressBar->setMaximum(totalBytes);   //第二个参数
ui->progressBar->setValue(bytesRead);      //第一个

private slots:
    void replyFinished(QNetworkReply *);
private:
    QNetworkAccessManager *manager;   //用来发送网络请求和接收应答


manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, 
       SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("输入地址")));//get()函数返回一个QNetworkReply对象


//槽函数replyFinished    QNetworkReply继承自QIODevice类
replyFinished(QNetworkReply* reply)
{
    QString all = reply->readAll();    //获取所有的应答数据
    reply->deleteLater();              //完成数据的读取之后,需要删除reply对象
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值