QAbstractHttpServer Class
API zur Unterklasse, um einen HTTP-Server zu implementieren. Mehr...
Kopfzeile: | #include <QAbstractHttpServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
qmake: | QT += httpserver |
Seit: | Qt 6.4 |
Erbt: | QObject |
Geerbt von: |
Öffentliche Funktionen
QAbstractHttpServer(QObject *parent = nullptr) | |
virtual | ~QAbstractHttpServer() override |
(since 6.8) void | addWebSocketUpgradeVerifier(const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType *context, Handler &&func) |
bool | bind(QLocalServer *server) |
bool | bind(QTcpServer *server) |
bool | hasPendingWebSocketConnections() const |
(since 6.8) QHttp2Configuration | http2Configuration() const |
QList<QLocalServer *> | localServers() const |
std::unique_ptr<QWebSocket> | nextPendingWebSocketConnection() |
QList<quint16> | serverPorts() const |
QList<QTcpServer *> | servers() const |
(since 6.8) void | setHttp2Configuration(const QHttp2Configuration &configuration) |
Signale
void | newWebSocketConnection() |
Geschützte Funktionen
virtual bool | handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder) = 0 |
virtual void | missingHandler(const QHttpServerRequest &request, QHttpServerResponder &responder) = 0 |
Detaillierte Beschreibung
Unterklassifizieren Sie diese Klasse und überschreiben Sie handleRequest() und missingHandler(), um einen HTTP-Server zu erstellen. Verwenden Sie bind(), um alle eingehenden Verbindungen zu einem Server abzuhören.
Dies ist eine Low-Level-API, siehe QHttpServer für eine High-Level-API zur Implementierung eines HTTP-Servers.
Dokumentation der Mitgliedsfunktionen
[explicit]
QAbstractHttpServer::QAbstractHttpServer(QObject *parent = nullptr)
Erzeugt eine Instanz von QAbstractHttpServer mit dem übergeordneten parent.
[override virtual noexcept]
QAbstractHttpServer::~QAbstractHttpServer()
Zerstört eine Instanz von QAbstractHttpServer.
[since 6.8]
template <typename Handler, QAbstractHttpServer::if_compatible_callable<Handler> = true> void QAbstractHttpServer::addWebSocketUpgradeVerifier(const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType *context, Handler &&func)
Fügt eine Callback-Funktion func hinzu, die eingehende WebSocket-Upgrades mit Hilfe des Kontextobjekts context verifiziert. Upgrade-Versuche sind erfolgreich, wenn mindestens eine der registrierten Callback-Funktionen Accept
zurückgibt und nicht zuvor ein Handler ausgeführt wurde, der Deny
zurückgibt. Wenn keine Handler registriert sind oder alle PassToNext
zurückgeben, wird missingHandler() aufgerufen. Die Callback-Funktionen werden in der Reihenfolge ausgeführt, in der sie registriert sind. Die Callbacks können nicht addWebSocketUpgradeVerifier() aufrufen.
Hinweis: Die WebSocket-Upgrades schlagen fehl, wenn keine Callbacks registriert wurden.
Hinweis: Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn die Callback-Funktion ein const
QHttpServerRequest & als Argument nimmt und ein QHttpServerWebSocketUpgradeResponse zurückgibt.
server.addWebSocketUpgradeVerifier( &server, [](const QHttpServerRequest &request) { if (request.url().path() == "/allowed"_L1) return QHttpServerWebSocketUpgradeResponse::accept(); else return QHttpServerWebSocketUpgradeResponse::passToNext(); });
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch QHttpServerRequest, QHttpServerWebSocketUpgradeResponse, hasPendingWebSocketConnections(), nextPendingWebSocketConnection(), newWebSocketConnection(), und missingHandler().
bool QAbstractHttpServer::bind(QLocalServer *server)
Bindet den HTTP-Server an die angegebene QLocalServer server , über die die Übertragung erfolgt. Es ist möglich, diese Funktion mehrere Male mit verschiedenen Instanzen von server aufzurufen, um mehrere Verbindungen zu behandeln.
Nach dem Aufruf dieser Funktion wird jede _neue_ Verbindung vom HTTP-Server bearbeitet und weitergeleitet.
Es liegt in der Verantwortung des Benutzers, QLocalServer::listen() auf server aufzurufen, bevor diese Funktion aufgerufen wird. Wenn server nicht zuhört, wird nichts passieren und false
wird zurückgegeben.
Wenn die server nullptr ist, wird false zurückgegeben.
Bei Erfolg wird server diesem HTTP-Server untergeordnet und true
zurückgegeben.
Siehe auch QLocalServer und QLocalServer::listen().
bool QAbstractHttpServer::bind(QTcpServer *server)
Bindet den HTTP-Server an den angegebenen TCP server, über den die Übertragung erfolgt. Es ist möglich, diese Funktion mehrfach mit verschiedenen Instanzen von TCP server aufzurufen, um mehrere Verbindungen und Ports zu behandeln, z.B. sowohl SSL- als auch nicht verschlüsselte Verbindungen.
Nach dem Aufruf dieser Funktion wird jede _neue_ Verbindung vom HTTP-Server behandelt und weitergeleitet.
Es liegt in der Verantwortung des Benutzers, QTcpServer::listen() auf server aufzurufen, bevor diese Funktion aufgerufen wird. Wenn server nicht zuhört, wird nichts passieren und false
wird zurückgegeben.
Bei Erfolg wird server diesem HTTP-Server übergeordnet und true
wird zurückgegeben.
Um die Verwendung von HTTP 2 zu ermöglichen, binden Sie sich an einen QSslServer, bei dem QSslConfiguration::setAllowedNextProtocols() mit den Argumenten { QSslConfiguration::ALPNProtocolHTTP2 }
aufgerufen wurde.
Siehe auch QTcpServer, QTcpServer::listen(), und QSslConfiguration::setAllowedNextProtocols().
[pure virtual protected]
bool QAbstractHttpServer::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder)
Überschreiben Sie diese Funktion, um jede eingehende request zu bearbeiten, indem Sie die request prüfen und die entsprechende Antwort an responder zurücksenden. Geben Sie true
zurück, wenn die request erfolgreich bearbeitet wurde. Wenn diese Methode false
zurückgibt, wird anschließend missingHandler() aufgerufen.
Diese Funktion muss responder verlassen, bevor sie true
zurückgibt.
bool QAbstractHttpServer::hasPendingWebSocketConnections() const
Gibt true
zurück, wenn der Server noch nicht abgeschlossene WebSocket-Verbindungen hat; andernfalls false
.
Siehe auch newWebSocketConnection(), nextPendingWebSocketConnection(), und addWebSocketUpgradeVerifier().
[since 6.8]
QHttp2Configuration QAbstractHttpServer::http2Configuration() const
Gibt die HTTP/2-Konfigurationsparameter des Servers zurück.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch setHttp2Configuration().
QList<QLocalServer *> QAbstractHttpServer::localServers() const
Gibt die lokalen Server dieses HTTP-Servers zurück.
Siehe auch serverPorts().
[pure virtual protected]
void QAbstractHttpServer::missingHandler(const QHttpServerRequest &request, QHttpServerResponder &responder)
Überschreiben Sie diese Funktion, um jede eingehende request zu behandeln, die nicht von handleRequest() behandelt wurde. Diese Funktion wird immer dann aufgerufen, wenn handleRequest() false
zurückgibt oder wenn es einen WebSocket-Upgrade-Versuch gibt und entweder keine Verbindungen zu newWebSocketConnection() bestehen oder keine passenden WebSocket-Prüfer vorhanden sind. Die Parameter request und responder sind die gleichen, mit denen handleRequest() aufgerufen wurde.
Siehe auch handleRequest() und addWebSocketUpgradeVerifier().
[signal]
void QAbstractHttpServer::newWebSocketConnection()
Dieses Signal wird jedes Mal ausgegeben, wenn eine neue WebSocket-Verbindung verfügbar ist.
Siehe auch hasPendingWebSocketConnections(), nextPendingWebSocketConnection(), und addWebSocketUpgradeVerifier().
std::unique_ptr<QWebSocket> QAbstractHttpServer::nextPendingWebSocketConnection()
Gibt die nächste anstehende Verbindung als verbundenes QWebSocket Objekt zurück. nullptr
wird zurückgegeben, wenn diese Funktion aufgerufen wird und keine anstehenden Verbindungen bestehen.
Hinweis: Das zurückgegebene QWebSocket Objekt kann nicht von einem anderen Thread aus verwendet werden.
Siehe auch newWebSocketConnection(), hasPendingWebSocketConnections(), und addWebSocketUpgradeVerifier().
QList<quint16> QAbstractHttpServer::serverPorts() const
Gibt die Liste der Ports zurück, die diese Instanz von QAbstractHttpServer abhört.
Diese Funktion hat die gleiche Garantie wie QObject::children, der zuletzt hinzugefügte Server ist der letzte Eintrag im Vektor.
Siehe auch servers().
QList<QTcpServer *> QAbstractHttpServer::servers() const
Gibt die TCP-Server dieses HTTP-Servers zurück.
Siehe auch serverPorts().
[since 6.8]
void QAbstractHttpServer::setHttp2Configuration(const QHttp2Configuration &configuration)
Setzt die HTTP/2-Konfigurationsparameter des Servers.
Die nächste HTTP/2-Verbindung wird die angegebene configuration verwenden.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch http2Configuration().
© 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.