Qt:QNetworkAccessManager

QNetworkAccessManager

QNetworkAccessManager允许应用程序发送网络请求和接收回复。

  • 网络访问API围绕一个QNetworkAccessManager对象构造,该对象保存其发送的请求的通用配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号,以及可用于件事网络操作进度的回复信号。一个QNetworkAccessManager实例对于整个Qt应用程序应该足够了。由于QNetworkAccessManager基于QObject,因此只能在其所属的线程中使用它。
  • 一旦创建了QNetworkAccessManager对象,应用程序就可以使用它通过网络发送请求。提供了一组标准函数,这些函数接收一个请求和可选数据,并且每个函数都返回一个QNetworkReply对象。返回的对象用于获取响应于相应请求而返回任何数据
Header:#include <QNetworkAccessManager>
qmake:QT += network
Since:Qt 4.4
继承QObject

注意:此类中的所有函数都是reentent。

一个简单的网络下载可以通过以下方式完成:

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

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

QNetworkAccessManager具有异步API。replyFinished调用上面的插槽时,它采用的参数是QNetworkReply对象,其中包含下载的数据以及元数据(标头等)。

注意:请求完成后,用户有责任在适当的时候删除QNetworkReply对象。不要在连接finished()插槽内直接删除它。您可以使用deleteLater()函数。

注意: QNetworkAccessManager将接收到的请求排队。并行执行的请求数取决于协议。当前,对于台式机平台上的HTTP协议,针对一个主机/端口组合并行执行6个请求。

假设管理者已经存在,那么一个更复杂的示例可以是:

QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead);
connect(reply, &QNetworkReply::errorOccurred,
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

官方文档:https://doc.qt.io/qt-5/qnetworkaccessmanager.html

Operation

原型

enum QNetworkAccessManager::Operation

作用

  • 表示此回复正在处理的操作。
  • 这个枚举是在Qt 4.7中引入或修改的。
  • 另请参见QNetworkReply :: operation()
Constantvalue描述
QNetworkAccessManager::HeadOperation1检索标头操作(使用head()创建)
QNetworkAccessManager::GetOperation2检索标题并下载内容(使用get()创建)
QNetworkAccessManager::PutOperation3上传内容操作(使用put()创建)
QNetworkAccessManager::PostOperation4发送HTML表单的内容以通过HTTP POST处理(使用post()创建)
QNetworkAccessManager::DeleteOperation5删除内容操作(使用deleteResource()创建)
QNetworkAccessManager::CustomOperation6定制操作(使用sendCustomRequest()创建)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值