QWebEngineUrlRequestJob 类

QWebEngineUrlRequestJob 类表示一个自定义的 URL 请求。 更多...

头文件 #include <QWebEngineUrlRequestJob>
CMakefind_package(Qt6 REQUIRED COMPONENTS WebEngineCore)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore)
qmakeQT += webenginecore
继承 QObject

公共类型

枚举Error { NoError, UrlNotFound, UrlInvalid, RequestAborted, RequestDenied, RequestFailed }

公共函数

voidfail(QWebEngineUrlRequestJob::Error r)
QUrlinitiator() const
voidredirect(const QUrl &url)
voidreply(const QByteArray &contentType, QIODevice *device)
(since 6.7) QIODevice *requestBody() const
QMap<QByteArray, QByteArray>requestHeaders() const
QByteArrayrequestMethod() const
QUrlrequestUrl() const
(since 6.6) voidsetAdditionalResponseHeaders(const QMultiMap<QByteArray, QByteArray> &additionalResponseHeaders) const

详细描述

QWebEngineUrlRequestJob 由QWebEngineUrlSchemeHandler::requestStarted()提供,并由该类派生实现的子类处理。可以调用reply(),redirect(),或fail()来处理作业。

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

成员类型文档

enum QWebEngineUrlRequestJob::Error

此枚举类型包含发生的错误类型

常数描述
QWebEngineUrlRequestJob::NoError0请求成功。
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 对象不属于 Web 引擎。因此,必须监视 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。

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

设置 additionalResponseHeaders。这些响应的附加头仅在调用 QWebEngineUrlRequestJob::reply(const QByteArray&, QIODevice*) 时使用。

此功能自 Qt 6.6 版本引入。

© 2024 Qt 公司。此处包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt及其标志是在芬兰和其他国家/地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。