QWebEngineUrlRequestJob Class

QWebEngineUrlRequestJob 类表示自定义 URL 请求。更多

Header: #include <QWebEngineUrlRequestJob>
CMake: find_package(Qt6 REQUIRED COMPONENTS WebEngineCore)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore)
qmake: QT += webenginecore
继承: QObject

公共类型

enum Error { NoError, UrlNotFound, UrlInvalid, RequestAborted, RequestDenied, RequestFailed }

公共函数

void fail(QWebEngineUrlRequestJob::Error r)
QUrl initiator() const
void redirect(const QUrl &url)
void reply(const QByteArray &contentType, QIODevice *device)
(since 6.7) QIODevice *requestBody() const
QMap<QByteArray, QByteArray> requestHeaders() const
QByteArray requestMethod() const
QUrl requestUrl() const
(since 6.6) void setAdditionalResponseHeaders(const QMultiMap<QByteArray, QByteArray> &additionalResponseHeaders) const

详细说明

QWebEngineUrlRequestJob 交给QWebEngineUrlSchemeHandler::requestStarted() 后,必须由该类的派生实现来处理。该任务可通过调用reply(),redirect() 或fail() 来处理。

该类归网络引擎所有,无需删除。但是,当不再需要该作业时,网络引擎可能会将其删除,因此,如果存储了指向该对象的指针,则必须监控信号QObject::destroyed() 。

成员类型文档

enum QWebEngineUrlRequestJob::Error

该枚举类型表示发生错误的类型:

常量说明
QWebEngineUrlRequestJob::NoError0请求成功。(自 Qt 6.8 起已弃用)
QWebEngineUrlRequestJob::UrlNotFound1未找到请求的 URL。
QWebEngineUrlRequestJob::UrlInvalid2请求的 URL 无效。
QWebEngineUrlRequestJob::RequestAborted3请求被取消。
QWebEngineUrlRequestJob::RequestDenied4请求被拒绝。
QWebEngineUrlRequestJob::RequestFailed5请求失败。

成员函数文档

void QWebEngineUrlRequestJob::fail(QWebEngineUrlRequestJob::Error r)

请求失败,错误信息为r

另请参阅 Error

QUrl QWebEngineUrlRequestJob::initiator() const

返回发起请求的内容的序列化来源。

一般来说,起源由方案、主机名和端口组成。例如,"http://localhost:8080" 就是一个有效的来源。如果端口是方案的默认端口(http 为 80,https 为 443),则省略端口。对于非网络方案,如fileqrc ,则省略主机名。

不过,还有一个特殊值"null" 代表唯一的起源。例如,它是沙盒 iframe 的原点。这种特殊来源的目的是在同来源检查中始终与所有其他来源不同。换句话说,具有唯一起源的内容永远都不应该有访问任何其他内容的特权。

最后,如果请求不是由网页内容发起的,函数将返回一个空的QUrl 。例如,在调用QWebEnginePage::setUrl() 时就会出现这种情况。

该值可用于实施安全的跨源检查。

void QWebEngineUrlRequestJob::redirect(const QUrl &url)

将请求重定向到url

void QWebEngineUrlRequestJob::reply(const QByteArray &contentType, QIODevice *device)

device 和内容类型contentType 来回复请求。内容类型类似于 HTTP Content-Type 标头,可以是 MIME 类型,也可以是 MIME 类型和字符集编码的组合,如下所示:"text/html; charset=utf-8"。

用户必须注意,device 将在另一个线程上使用,直到作业被删除。如果希望从主线程同时访问device ,用户有责任确保访问 的线程安全,例如使用QMutex 。请注意,device 对象不属于网络引擎。因此,必须监控QWebEngineUrlRequestJob 的信号QObject::destroyed() 。

只要任务存在,设备就应保持可用。当使用新构建的设备调用此方法时,一种解决方案是将设备作为作业的子设备,或在作业删除时删除设备,如下所示:

connect(job, &QObject::destroyed, device, &QObject::deleteLater);

[since 6.7] QIODevice *QWebEngineUrlRequestJob::requestBody() const

返回指向QIODevice 的指针,该指针用于访问请求正文。请求体可以包含数据,例如当请求是 POST 请求时。如果请求体为空,QIODevice 将反映这一点,并在对其执行读取操作时不返回任何数据。

此函数在 Qt 6.7 中引入。

另请参见 QIODevice

QMap<QByteArray, QByteArray> QWebEngineUrlRequestJob::requestHeaders() const

返回添加到请求中的任何 HTTP 标头。

QByteArray QWebEngineUrlRequestJob::requestMethod() const

返回请求的 HTTP 方法(如 GET 或 POST)。

QUrl QWebEngineUrlRequestJob::requestUrl() const

返回请求的 URL。

[since 6.6] void QWebEngineUrlRequestJob::setAdditionalResponseHeaders(const QMultiMap<QByteArray, QByteArray> &additionalResponseHeaders) const

设置additionalResponseHeaders 。只有调用QWebEngineUrlRequestJob::reply(constQByteArray&,QIODevice*) 时,才会使用响应的这些附加标头。

此函数在 Qt 6.6 中引入。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.