Qt:QNetworkAccessManager 待我称王封你为后i 2022-11-10 05:44 58阅读 0赞 # QNetworkAccessManager # `QNetworkAccessManager`类**允许应用程序发送网络请求和接收回复。** * 网络访问API围绕一个`QNetworkAccessManager`对象构造,该对象保存其发送的请求的通用配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号,以及可用于件事网络操作进度的回复信号。一个QNetworkAccessManager实例对于整个Qt应用程序应该足够了。由于QNetworkAccessManager基于`QObject`,因此只能在其所属的线程中使用它。 * 一旦创建了QNetworkAccessManager对象,应用程序就可以使用它通过网络发送请求。提供了一组标准函数,这些函数接收一个请求和可选数据,并且每个函数都返回一个`QNetworkReply`对象。返回的对象用于获取响应于相应请求而返回任何数据 <table> <thead> <tr> <th>Header:</th> <th><code>#include <QNetworkAccessManager></code></th> </tr> </thead> <tbody> <tr> <td>qmake:</td> <td>QT += network</td> </tr> <tr> <td>Since:</td> <td>Qt 4.4</td> </tr> <tr> <td>继承</td> <td>QObject</td> </tr> </tbody> </table> 注意:此类中的所有函数都是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][https_doc.qt.io_qt-5_qnetworkaccessmanager.html] ## Operation ## > **原型** > > enum QNetworkAccessManager::Operation > > **作用** > > * 表示此回复正在处理的操作。 > * 这个枚举是在Qt 4.7中引入或修改的。 > * 另请参见`QNetworkReply :: operation()`。 <table> <thead> <tr> <th>Constant</th> <th>value</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>QNetworkAccessManager::HeadOperation</td> <td>1</td> <td>检索标头操作(使用head()创建)</td> </tr> <tr> <td>QNetworkAccessManager::GetOperation</td> <td>2</td> <td>检索标题并下载内容(使用get()创建)</td> </tr> <tr> <td>QNetworkAccessManager::PutOperation</td> <td>3</td> <td>上传内容操作(使用put()创建)</td> </tr> <tr> <td>QNetworkAccessManager::PostOperation</td> <td>4</td> <td>发送HTML表单的内容以通过HTTP POST处理(使用post()创建)</td> </tr> <tr> <td>QNetworkAccessManager::DeleteOperation</td> <td>5</td> <td>删除内容操作(使用deleteResource()创建)</td> </tr> <tr> <td>QNetworkAccessManager::CustomOperation</td> <td>6</td> <td>定制操作(使用sendCustomRequest()创建)</td> </tr> </tbody> </table> [https_doc.qt.io_qt-5_qnetworkaccessmanager.html]: https://doc.qt.io/qt-5/qnetworkaccessmanager.html
还没有评论,来说两句吧...