1、概述
QNetworkRequest是Qt网络模块中的一个焦点类,专门用于处理网络哀求。它封装了网络哀求的所有关键信息,包括哀求的URL、HTTP头部信息等,使得开发者可以或许方便地在Qt应用程序中实行网络操作,如文件下载、网页内容获取等。QNetworkRequest通常与QNetworkAccessManager和QNetworkReply等类协同工作,共同构建Qt中强大的网络功能体系。
2、紧张方法
- QNetworkRequest():默认构造函数。
- QNetworkRequest(const QUrl &url):使用指定的URL构造哀求。
- QNetworkRequest(const QNetworkRequest &other):复制构造函数。
- QNetworkRequest &operator=(const QNetworkRequest &other):赋值操作符,用于复制哀求对象。
- void setAttribute(QNetworkRequest::Attribute code, const QVariant &value) 和 QVariant attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue = QVariant()) const:设置和获取哀求属性。
- void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) 和 QVariant header(QNetworkRequest::KnownHeaders header) const:设置和获取已知HTTP头部。
- void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) 和 QByteArray rawHeader(const QByteArray &headerName) const:设置和获取原始HTTP头部。
- void setUrl(const QUrl &url) 和 QUrl url() const:设置和获取哀求的URL。
- void setPriority(QNetworkRequest:
riority priority) 和 QNetworkRequest: riority priority() const:设置和获取哀求的优先级。
- void setMaximumRedirectsAllowed(int maxRedirectsAllowed) 和 int maximumRedirectsAllowed() const:设置和获取允许的最大重定向次数。
- void setSslConfiguration(const QSslConfiguration &config) 和 QSslConfiguration sslConfiguration() const:设置和获取SSL设置。
3、常用罗列类型
罗列类型 Attribute
这个罗列包含了多个属性代码,用于控制哀求行为并从回复中通报更多信息给应用程序。比方:
- HttpStatusCodeAttribute:获取HTTP状态码。
- HttpReasonPhraseAttribute:获取HTTP状态消息。
- RedirectionTargetAttribute:获取重定向目标URL。
- ConnectionEncryptedAttribute:检查毗连是否加密。
- CacheLoadControlAttribute:控制缓存加载计谋。
罗列类型 CacheLoadControl
这个罗列用于控制QNetworkAccessManager的缓冲机制,决定是优先使用网络还是缓存:
- AlwaysNetwork:总是从网络加载。
- PreferNetwork:优先从网络加载,但如果网络不可用则使用缓存。
- PreferCache:优先使用缓存,但如果缓存不可用则从网络加载。
- AlwaysCache:总是从缓存加载。
罗列类型 KnownHeaders
已知的HTTP头部字段罗列,方便设置和获取头部信息,比方:
- ContentDispositionHeader:内容处理。
- ContentTypeHeader:内容类型。
- ContentLengthHeader:内容长度。
- LocationHeader:重定向位置。
- LastModifiedHeader:最后修改时间。
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- networkManager = new QNetworkAccessManager(this);
- connect(networkManager, &QNetworkAccessManager::finished, this, &MainWindow::replyFinished);
- QUrl url("http://jsonplaceholder.typicode.com/posts/1");
- QNetworkRequest request(url);
- // 设置自定义头信息
- request.setRawHeader("User-Agent", "QNetworkRequest Example");
- networkManager->get(request);
- QTimer::singleShot(5000, this, [&]
- {
- QUrl url("http://jsonplaceholder.typicode.com/posts");
- QNetworkRequest request(url);
- // 设置已知头信息
- request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
- QJsonObject json;
- json["title"] = "foo";
- json["body"] = "bar";
- json["userId"] = 1;
- QJsonDocument jsonDoc(json);
- QByteArray jsonData = jsonDoc.toJson();
- networkManager->post(request, jsonData);
- });
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::replyFinished(QNetworkReply *reply)
- {
- if (reply->error() == QNetworkReply::NoError) {
- QByteArray responseData = reply->readAll();
- qDebug() << "Response data:" << responseData;
- } else {
- qDebug() << "Network error:" << reply->errorString();
- }
- reply->deleteLater();
- }
复制代码 觉得有资助的话,打赏一下呗。。
 
需要商务合作(定制程序)的欢迎私信!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |