QAbstractHttpServer Class

API to subclass to implement an HTTP server. 更多...

頭: #include <QAbstractHttpServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
qmake: QT += httpserver
Since: Qt 6.4
繼承: QObject
繼承者:

QHttpServer

公共函數

QAbstractHttpServer (QObject * parent = nullptr)
virtual ~QAbstractHttpServer () override
(從 6.8 起) void addWebSocketUpgradeVerifier (const QObject * context , Handler && func )
bool bind (QLocalServer * server )
bool bind (QTcpServer * server )
(從 6.9 起) QHttpServerConfiguration configuration () const
bool hasPendingWebSocketConnections () const
(從 6.8 起) QHttp2Configuration http2Configuration () const
QList<QLocalServer *> localServers () const
std::unique_ptr<QWebSocket> nextPendingWebSocketConnection ()
QList<quint16> serverPorts () const
QList<QTcpServer *> servers () const
(從 6.9 起) void setConfiguration (const QHttpServerConfiguration & config )
(從 6.8 起) void setHttp2Configuration (const QHttp2Configuration & configuration )

信號

void newWebSocketConnection ()

保護函數

virtual bool handleRequest (const QHttpServerRequest & request , QHttpServerResponder & responder ) = 0
virtual void missingHandler (const QHttpServerRequest & request , QHttpServerResponder & responder ) = 0

詳細描述

Subclass this class and override handleRequest () 和 missingHandler () to create an HTTP server. Use bind () to start listening to all the incoming connections to a server.

This is a low level API, see QHttpServer for a higher level API to implement an HTTP server.

成員函數文檔編製

[explicit] QAbstractHttpServer:: QAbstractHttpServer ( QObject * parent = nullptr)

Creates an instance of QAbstractHttpServer with the parent parent .

[override virtual noexcept] QAbstractHttpServer:: ~QAbstractHttpServer ()

Destroys an instance of QAbstractHttpServer .

[since 6.8] template <typename Handler> void QAbstractHttpServer:: addWebSocketUpgradeVerifier (const QObject * context , Handler && func )

Adds a callback function func that verifies incoming WebSocket upgrades. It is called using the provided context object. An upgrade succeeds if at least one registered callback returns Accept and no prior callback has returned Deny . If no callbacks are registered, or all return PassToNext missingHandler () function is called. Callbacks are executed in the order they were registered, and they cannot call this function themselves.

注意: The func has to implement the signature QHttpServerWebSocketUpgradeResponse (*)(const QHttpServerRequest &) .

server.addWebSocketUpgradeVerifier(
        &server, [](const QHttpServerRequest &request) {
            if (request.url().path() == "/allowed"_L1)
                return QHttpServerWebSocketUpgradeResponse::accept();
            else
                return QHttpServerWebSocketUpgradeResponse::passToNext();
        });
					

該函數在 Qt 6.8 引入。

另請參閱 QHttpServerRequest , QHttpServerWebSocketUpgradeResponse , hasPendingWebSocketConnections (), nextPendingWebSocketConnection (), newWebSocketConnection (),和 missingHandler ().

bool QAbstractHttpServer:: bind ( QLocalServer * server )

Bind the given QLocalServer server , over which the transmission happens, to the HTTP server. It is possible to call this function multiple times with different instances of server to handle multiple connections.

After calling this function, every new connection will be handled and forwarded by the HTTP server.

It is the user's responsibility to call QLocalServer::listen () on the server before calling this function. If server is not listening, nothing will happen and false 將被返迴。

server is nullptr false is returned.

If successful the server will be parented to this HTTP server and true 被返迴。

另請參閱 QLocalServer and QLocalServer::listen ().

bool QAbstractHttpServer:: bind ( QTcpServer * server )

Bind the given TCP server , over which the transmission happens, to the HTTP server. It is possible to call this function multiple times with different instances of TCP server to handle multiple connections and ports, for example both SSL and non-encrypted connections.

After calling this function, every new connection will be handled and forwarded by the HTTP server.

It is the user's responsibility to call QTcpServer::listen () on the server before calling this function. If server is not listening, nothing will happen and false 將被返迴。

If successful the server will be parented to this HTTP server and true 被返迴。

To allow usage of HTTP 2, bind to a QSslServer where QSslConfiguration::setAllowedNextProtocols () has been called with the arguments { QSslConfiguration::ALPNProtocolHTTP2 } .

另請參閱 QTcpServer , QTcpServer::listen (),和 QSslConfiguration::setAllowedNextProtocols ().

[since 6.9] QHttpServerConfiguration QAbstractHttpServer:: configuration () const

Returns this server's general configuration parameters.

該函數在 Qt 6.9 引入。

另請參閱 setConfiguration ().

[pure virtual protected] bool QAbstractHttpServer:: handleRequest (const QHttpServerRequest & request , QHttpServerResponder & responder )

Override this function to handle each incoming request , by examining the request and sending the appropriate response back to responder . Return truerequest was handled successfully. If this method returns false , missingHandler () will be called afterwards.

bool QAbstractHttpServer:: hasPendingWebSocketConnections () const

返迴 true if the server has pending WebSocket connections; otherwise returns false .

另請參閱 newWebSocketConnection (), nextPendingWebSocketConnection (),和 addWebSocketUpgradeVerifier ().

[since 6.8] QHttp2Configuration QAbstractHttpServer:: http2Configuration () const

Returns server's HTTP/2 configuration parameters.

該函數在 Qt 6.8 引入。

另請參閱 setHttp2Configuration ().

QList < QLocalServer *> QAbstractHttpServer:: localServers () const

Returns the local servers of this HTTP server.

另請參閱 serverPorts ().

[pure virtual protected] void QAbstractHttpServer:: missingHandler (const QHttpServerRequest & request , QHttpServerResponder & responder )

Override this function to handle each incoming request that was not handled by handleRequest (). This function is called whenever handleRequest () 返迴 false , or if there is a WebSocket upgrade attempt and either there are no connections to newWebSocketConnection () or there are no matching WebSocket verifiers. The request and responder parameters are the same as handleRequest () was called with.

另請參閱 handleRequest () 和 addWebSocketUpgradeVerifier ().

[signal] void QAbstractHttpServer:: newWebSocketConnection ()

This signal is emitted every time a new WebSocket connection is available.

另請參閱 hasPendingWebSocketConnections (), nextPendingWebSocketConnection (),和 addWebSocketUpgradeVerifier ().

std::unique_ptr < QWebSocket > QAbstractHttpServer:: nextPendingWebSocketConnection ()

返迴下一待決連接作為連接的 QWebSocket 對象。 nullptr 被返迴若在沒有待決連接時調用此函數。

注意: 返迴的 QWebSocket 對象不可以用於其它綫程。

另請參閱 newWebSocketConnection (), hasPendingWebSocketConnections (),和 addWebSocketUpgradeVerifier ().

QList < quint16 > QAbstractHttpServer:: serverPorts () const

Returns the list of ports this instance of QAbstractHttpServer is listening to.

This function has the same guarantee as QObject::children , the latest server added is the last entry in the vector.

另請參閱 servers ().

QList < QTcpServer *> QAbstractHttpServer:: servers () const

Returns the TCP and SSL servers this HTTP server will handle connections from.

另請參閱 serverPorts ().

[since 6.9] void QAbstractHttpServer:: setConfiguration (const QHttpServerConfiguration & config )

Sets this server's general configuration parameters to config .

注意: The new configuration will be applied both to already established connections and all next connections.

該函數在 Qt 6.9 引入。

另請參閱 configuration ().

[since 6.8] void QAbstractHttpServer:: setHttp2Configuration (const QHttp2Configuration & configuration )

Sets server's HTTP/2 configuration parameters.

The next HTTP/2 connection will use the given configuration .

該函數在 Qt 6.8 引入。

另請參閱 http2Configuration ().