QWebEngineUrlRequestJob Class

Die Klasse QWebEngineUrlRequestJob stellt eine benutzerdefinierte URL-Anfrage dar. Mehr...

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

Öffentliche Typen

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

Öffentliche Funktionen

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

Detaillierte Beschreibung

Ein QWebEngineUrlRequestJob wird an QWebEngineUrlSchemeHandler::requestStarted() übergeben und muss von den abgeleiteten Implementierungen der Klasse verarbeitet werden. Der Auftrag kann entweder durch den Aufruf von reply(), redirect() oder fail() bearbeitet werden.

Die Klasse ist Eigentum der Web-Engine und muss nicht gelöscht werden. Die Web-Engine kann den Auftrag jedoch löschen, wenn er nicht mehr benötigt wird, und daher muss das Signal QObject::destroyed() überwacht werden, wenn ein Zeiger auf das Objekt gespeichert ist.

Dokumentation der Mitgliedstypen

enum QWebEngineUrlRequestJob::Error

Dieser Enum-Typ enthält den Typ des aufgetretenen Fehlers:

KonstanteWertBeschreibung
QWebEngineUrlRequestJob::NoError0Die Anfrage war erfolgreich. (Veraltet seit Qt 6.8)
QWebEngineUrlRequestJob::UrlNotFound1Die angeforderte URL wurde nicht gefunden.
QWebEngineUrlRequestJob::UrlInvalid2Die angeforderte URL ist ungültig.
QWebEngineUrlRequestJob::RequestAborted3Die Anfrage wurde abgebrochen.
QWebEngineUrlRequestJob::RequestDenied4Die Anfrage wurde abgelehnt.
QWebEngineUrlRequestJob::RequestFailed5Die Anfrage ist fehlgeschlagen.

Dokumentation der Mitgliedsfunktionen

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

Scheitert die Anfrage mit dem Fehler r.

Siehe auch Error.

QUrl QWebEngineUrlRequestJob::initiator() const

Gibt den serialisierten Ursprung des Inhalts zurück, der die Anfrage ausgelöst hat.

Im Allgemeinen besteht der Ursprung aus einem Schema, einem Hostnamen und einem Port. Zum Beispiel wäre "http://localhost:8080" ein gültiger Ursprung. Der Port wird weggelassen, wenn es sich um den Standardport des Schemas handelt (80 für http, 443 für https). Der Hostname wird weggelassen, wenn es sich nicht um ein Netzwerk handelt, wie file und qrc.

Es gibt jedoch auch den speziellen Wert "null", der für einen eindeutigen Ursprung steht. Dies ist z. B. der Ursprung eines Sandbox-iframe. Der Zweck dieses speziellen Ursprungs ist es, sich immer von allen anderen Ursprüngen bei der Prüfung des gleichen Ursprungs zu unterscheiden. Mit anderen Worten: Inhalte mit einem eindeutigen Ursprung sollten niemals privilegierten Zugang zu anderen Inhalten haben.

Wurde die Anfrage nicht von Web-Inhalten initiiert, gibt die Funktion einen leeren QUrl zurück. Dies geschieht zum Beispiel beim Aufruf von QWebEnginePage::setUrl().

Dieser Wert kann für die Implementierung sicherer herkunftsübergreifender Prüfungen verwendet werden.

void QWebEngineUrlRequestJob::redirect(const QUrl &url)

Leitet die Anfrage an url weiter.

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

Antwortet auf die Anfrage mit device und dem Inhaltstyp contentType. Der Inhaltstyp ähnelt dem HTTP-Content-Type-Header und kann entweder ein MIME-Typ oder eine Kombination aus MIME-Typ und Zeichensatzkodierung wie folgt sein: "text/html; charset=utf-8".

Der Benutzer muss sich bewusst sein, dass device auf einem anderen Thread verwendet wird, bis der Auftrag gelöscht wird. Falls ein gleichzeitiger Zugriff vom Haupt-Thread aus erwünscht ist, liegt es in der Verantwortung des Benutzers, den Zugriff auf device thread-sicher zu machen, z. B. durch Verwendung von QMutex. Beachten Sie, dass das Objekt device nicht im Besitz der Web-Engine ist. Daher muss das Signal QObject::destroyed() von QWebEngineUrlRequestJob überwacht werden.

Das Gerät sollte mindestens so lange verfügbar bleiben, wie der Auftrag existiert. Wenn diese Methode mit einem neu erstellten Gerät aufgerufen wird, besteht eine Lösung darin, das Gerät als Kind des Auftrags zu erstellen oder sich selbst zu löschen, wenn der Auftrag gelöscht wird, etwa so:

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

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

Gibt einen Zeiger auf eine QIODevice zurück, die den Zugriff auf den Request Body ermöglicht. Der Request Body kann Daten enthalten, wenn es sich beispielsweise um eine POST-Anfrage handelt. Wenn der Request Body leer ist, reflektiert QIODevice dies und gibt keine Daten zurück, wenn Leseoperationen darauf ausgeführt werden.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch QIODevice.

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

Gibt alle HTTP-Header zurück, die der Anfrage hinzugefügt wurden.

QByteArray QWebEngineUrlRequestJob::requestMethod() const

Gibt die HTTP-Methode der Anfrage zurück (z. B. GET oder POST).

QUrl QWebEngineUrlRequestJob::requestUrl() const

Gibt die angeforderte URL zurück.

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

Setzen Sie additionalResponseHeaders. Diese zusätzlichen Kopfzeilen der Antwort werden nur verwendet, wenn QWebEngineUrlRequestJob::reply(const QByteArray&, QIODevice*) aufgerufen wird.

Diese Funktion wurde in Qt 6.6 eingeführt.

© 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.