Auf dieser Seite

QNetworkProxy Class

Die Klasse „QNetworkProxy“ stellt einen Proxy für die Netzwerkschicht bereit. Mehr...

Header: #include <QNetworkProxy>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

flags Capabilities
enum Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability }
enum ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy }

Öffentliche Funktionen

QNetworkProxy()
QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
QNetworkProxy(const QNetworkProxy &other)
~QNetworkProxy()
QNetworkProxy::Capabilities capabilities() const
bool hasRawHeader(const QByteArray &headerName) const
QVariant header(QNetworkRequest::KnownHeaders header) const
(since 6.8) QHttpHeaders headers() const
QString hostName() const
bool isCachingProxy() const
bool isTransparentProxy() const
QString password() const
quint16 port() const
QByteArray rawHeader(const QByteArray &headerName) const
QList<QByteArray> rawHeaderList() const
void setCapabilities(QNetworkProxy::Capabilities capabilities)
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
(since 6.8) void setHeaders(QHttpHeaders &&newHeaders)
(since 6.8) void setHeaders(const QHttpHeaders &newHeaders)
void setHostName(const QString &hostName)
void setPassword(const QString &password)
void setPort(quint16 port)
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
void setType(QNetworkProxy::ProxyType type)
void setUser(const QString &user)
void swap(QNetworkProxy &other)
QNetworkProxy::ProxyType type() const
QString user() const
bool operator!=(const QNetworkProxy &other) const
QNetworkProxy &operator=(const QNetworkProxy &other)
bool operator==(const QNetworkProxy &other) const

Statische öffentliche Mitglieder

QNetworkProxy applicationProxy()
void setApplicationProxy(const QNetworkProxy &networkProxy)

Ausführliche Beschreibung

Die Proxy-Unterstützung auf Netzwerkebene wird durch QNetworkProxy konfiguriert. Die derzeit unterstützten Klassen sind QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServer und QNetworkAccessManager. Die Proxy-Unterstützung ist so transparent wie möglich gestaltet. Das bedeutet, dass bestehende netzwerkfähige Anwendungen, die Sie geschrieben haben, die Netzwerk-Proxy-Funktion automatisch unterstützen sollten, wenn Sie den folgenden Code verwenden.

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(1080);
proxy.setUser("username");
proxy.setPassword("password");
QNetworkProxy::setApplicationProxy(proxy);

Eine Alternative zur Einstellung eines anwendungsweiten Proxys besteht darin, den Proxy für einzelne Sockets mithilfe von ` QAbstractSocket::setProxy()` und ` QTcpServer::setProxy()` festzulegen. Auf diese Weise ist es möglich, die Verwendung eines Proxys für bestimmte Sockets mithilfe des folgenden Codes zu deaktivieren:

serverSocket->setProxy(QNetworkProxy::NoProxy);

Der Netzwerk-Proxy wird nicht verwendet, wenn die in ` connectToHost()`, ` bind()` oder ` listen()` verwendete Adresse mit ` QHostAddress::LocalHost ` oder ` QHostAddress::LocalHostIPv6` übereinstimmt.

Jede Art der Proxy-Unterstützung unterliegt bestimmten Einschränkungen. Sie sollten die Dokumentation zu ProxyType sorgfältig lesen, bevor Sie einen Proxy-Typ auswählen.

Hinweis: Änderungen an derzeit verbundenen Sockets werden nicht übernommen. Wenn Sie einen verbundenen Socket ändern müssen, sollten Sie die Verbindung neu herstellen.

SOCKS5

Die SOCKS5-Unterstützung seit Qt 4 basiert auf RFC 1928 und RFC 1929. Die unterstützten Authentifizierungsmethoden sind „keine Authentifizierung“ sowie die Authentifizierung per Benutzername und Passwort. Sowohl IPv4 als auch IPv6 werden unterstützt. Domänennamen werden über den SOCKS5-Server aufgelöst, wenn die Option „ QNetworkProxy::HostNameLookupCapability “ aktiviert ist; andernfalls werden sie lokal aufgelöst und die IP-Adresse an den Server gesendet. Bei der Verwendung von SOCKS5 mit „ QUdpSocket “ und „ QTcpServer “ sind einige Punkte zu beachten:

Bei QUdpSocket kann ein Aufruf von bind() mit einem Timeout-Fehler fehlschlagen. Wenn eine andere Portnummer als 0 an bind() übergeben wird, ist nicht garantiert, dass der angegebene Port tatsächlich verwendet wird. Verwenden Sie ` localPort()` und ` localAddress()`, um die tatsächlich verwendete Adresse und Portnummer abzurufen. Da UDP über einen Proxy zwei UDP-Verbindungen durchläuft, ist die Wahrscheinlichkeit höher, dass Pakete verloren gehen.

Bei „ QTcpServer “ kann ein Aufruf von ` listen()` mit einem Timeout-Fehler fehlschlagen. Wenn eine andere Portnummer als 0 an ` listen()` übergeben wird, ist nicht garantiert, dass der angegebene Port verwendet wird. Verwenden Sie ` serverPort()` und ` serverAddress()`, um die tatsächlich zum Abhören von Verbindungen verwendete Adresse und den Port abzurufen. SOCKS5 unterstützt nur eine akzeptierte Verbindung pro Aufruf von ` listen()`; bei jedem Aufruf wird wahrscheinlich ein anderer ` serverPort()` verwendet.

Siehe auch QAbstractSocket und QTcpServer.

Dokumentation zu Mitgliedstypen

enum QNetworkProxy::Capability
flags QNetworkProxy::Capabilities

Diese Flags geben an, welche Funktionen ein bestimmter Proxy-Server unterstützt.

QNetworkProxy Legt beim Erstellen des Objekts standardmäßig verschiedene Funktionen fest (eine Liste der Standardwerte finden Sie unter QNetworkProxy::ProxyType ). Es ist jedoch möglich, die Funktionen nach der Erstellung des Objekts mit setCapabilities() zu ändern.

Die von ` QNetworkProxy ` unterstützten Funktionen sind:

KonstantWertBeschreibung
QNetworkProxy::TunnelingCapability0x0001Möglichkeit, transparente, getunnelte TCP-Verbindungen zu einem Remote-Host zu öffnen. Der Proxy-Server leitet die Übertragung unverändert von einer Seite zur anderen weiter und führt keine Zwischenspeicherung durch.
QNetworkProxy::ListeningCapability0x0002Möglichkeit, einen Listening-Socket zu erstellen und auf eine eingehende TCP-Verbindung von einem Remote-Host zu warten.
QNetworkProxy::UdpTunnelingCapability0x0004Fähigkeit, UDP-Datagramme über den Proxy-Server zu und von einem Remote-Host weiterzuleiten.
QNetworkProxy::CachingCapability0x0008Fähigkeit, den Inhalt der Übertragung zwischenzuspeichern. Diese Fähigkeit ist protokoll- und proxyspezifisch. Beispielsweise können HTTP-Proxys den Inhalt von Webdaten zwischenspeichern, die mit „GET“-Befehlen übertragen werden.
QNetworkProxy::HostNameLookupCapability0x0010Fähigkeit, eine Verbindung herzustellen, um die Namensauflösung für einen Remote-Host durchzuführen und eine Verbindung zu diesem herzustellen, anstatt dass die Anwendung die Namensauflösung durchführen und eine Verbindung ausschließlich zu IP-Adressen anfordern muss.
QNetworkProxy::SctpTunnelingCapability0x00020Die Fähigkeit, transparente, getunnelte SCTP-Verbindungen zu einem Remote-Host zu öffnen.
QNetworkProxy::SctpListeningCapability0x00040Fähigkeit, einen Listening-Socket zu erstellen und auf eine eingehende SCTP-Verbindung von einem Remote-Host zu warten.

Der Typ „Capabilities“ ist ein `typedef` für ` QFlags<Capability>`. Er speichert eine ODER-Kombination von `Capability`-Werten.

enum QNetworkProxy::ProxyType

Diese Enumeration beschreibt die in Qt Network bereitgestellten Arten von Netzwerk-Proxys.

Es gibt zwei Arten von Proxys, die Qt unterstützt: transparente Proxys und Caching-Proxys. Die erste Gruppe umfasst Proxys, die beliebige Datenübertragungen verarbeiten können, während die zweite Gruppe nur bestimmte Anfragen bearbeiten kann. Die Caching-Proxys sind nur für die spezifischen Klassen sinnvoll, in denen sie verwendet werden können.

KonstanteWertBeschreibung
QNetworkProxy::NoProxy2Es wird kein Proxy verwendet
QNetworkProxy::DefaultProxy0Der Proxy wird anhand des mit ` setApplicationProxy()` festgelegten Anwendungsproxys bestimmt
QNetworkProxy::Socks5Proxy1Socks5 Proxying wird verwendet
QNetworkProxy::HttpProxy3Es wird transparentes HTTP-Proxying verwendet
QNetworkProxy::HttpCachingProxy4Proxying nur für HTTP-Anfragen
QNetworkProxy::FtpCachingProxy5Proxying nur für FTP-Anfragen

Die folgende Tabelle listet verschiedene Proxy-Typen und deren Funktionen auf. Da jeder Proxy-Typ unterschiedliche Funktionen bietet, ist es wichtig, diese zu verstehen, bevor man sich für einen Proxy-Typ entscheidet.

Proxy-TypBeschreibungStandardfunktionen
SOCKS 5Allgemeiner Proxy für jede Art von Verbindung. Unterstützt TCP, UDP, die Bindung an einen Port (eingehende Verbindungen) und Authentifizierung.TunnelingCapability, ListeningCapability, UdpTunnelingCapability, HostNameLookupCapability
HTTPWird mithilfe des Befehls „CONNECT“ implementiert, unterstützt nur ausgehende TCP-Verbindungen; unterstützt Authentifizierung.TunnelingCapability, CachingCapability, HostNameLookupCapability
HTTP nur zum ZwischenspeichernWird mithilfe normaler HTTP-Befehle implementiert und ist nur im Zusammenhang mit HTTP-Anfragen sinnvoll (siehe QNetworkAccessManager)CachingCapability, HostNameLookupCapability
Caching-FTPWird mithilfe eines FTP-Proxys implementiert und ist nur im Zusammenhang mit FTP-Anfragen nützlich (siehe QNetworkAccessManager)CachingCapability, HostNameLookupCapability

Beachten Sie außerdem, dass Sie den Standard-Proxy der Anwendung (setApplicationProxy()) nicht auf einen Proxy setzen sollten, der nicht über die Funktion „ TunnelingCapability “ verfügt. Andernfalls weiß QTcpSocket nicht, wie Verbindungen hergestellt werden sollen.

Siehe auch setType(), type(), capabilities() und setCapabilities().

Dokumentation zu Mitgliedsfunktionen

QNetworkProxy::QNetworkProxy()

Erstellt einen `QNetworkProxy` vom Typ ` DefaultProxy `.

Der Proxy-Typ wird durch ` applicationProxy()` bestimmt, dessen Standardwert ` NoProxy ` ist oder ein systemweiter Proxy, sofern einer konfiguriert ist.

Siehe auch „ setType()“ und „ setApplicationProxy()“.

QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())

Erstellt einen QNetworkProxy mit den folgenden Eigenschaften: „ type “, „ hostName “, „ port “, „ user “ und „ password “.

Die Standardfunktionen für den Proxy-Typ „ type “ werden automatisch festgelegt.

Siehe auch ` capabilities()`.

QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)

Erstellt eine Kopie von „ other “.

[noexcept] QNetworkProxy::~QNetworkProxy()

Löscht das „ QNetworkProxy “-Objekt.

[static] QNetworkProxy QNetworkProxy::applicationProxy()

Gibt das Netzwerk-Proxying auf Anwendungsebene zurück.

Wenn ein „ QAbstractSocket “ oder „ QTcpSocket “ den Typ „ QNetworkProxy::DefaultProxy “ hat, wird das von dieser Funktion zurückgegebene „ QNetworkProxy “ verwendet.

Siehe auch ` QNetworkProxyFactory`, ` setApplicationProxy()`, ` QAbstractSocket::proxy()` und ` QTcpServer::proxy()`.

QNetworkProxy::Capabilities QNetworkProxy::capabilities() const

Gibt die Funktionen dieses Proxy-Servers zurück.

Siehe auch „ setCapabilities()“ und „ type()“.

bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const

Gibt „ true “ zurück, wenn für diesen Proxy der Raw-Header „ headerName “ verwendet wird. Gibt „ false “ zurück, wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist.

Siehe auch „ rawHeader()“ und „ setRawHeader()“.

Gibt den Wert des bekannten Netzwerk-Headers „ header “ zurück, sofern dieser für diesen Proxy verwendet wird. Ist er nicht vorhanden, wird „QVariant()“ (d. h. eine ungültige Variante) zurückgegeben.

Siehe auch „ QNetworkRequest::KnownHeaders“ , „ rawHeader()“ und „ setHeader()“.

[since 6.8] QHttpHeaders QNetworkProxy::headers() const

Gibt die in dieser Netzwerkanfrage gesetzten Header zurück.

Wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist, wird ein standardmäßig initialisiertes „ QHttpHeaders “ zurückgegeben.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` setHeaders()`.

QString QNetworkProxy::hostName() const

Gibt den Hostnamen des Proxy-Hosts zurück.

Siehe auch setHostName(), setPort() und port().

bool QNetworkProxy::isCachingProxy() const

Gibt „ true “ zurück, wenn dieser Proxy die Funktion „ QNetworkProxy::CachingCapability “ unterstützt.

In Qt 4.4 war diese Funktion an den Proxy-Typ gebunden, aber seit Qt 4.5 ist es möglich, die Caching-Funktion eines Proxys durch den Aufruf von ` setCapabilities()` zu entfernen.

Siehe auch capabilities(), type() und isTransparentProxy().

bool QNetworkProxy::isTransparentProxy() const

Gibt „ true “ zurück, wenn dieser Proxy das transparente Tunneln von TCP-Verbindungen unterstützt. Dies entspricht der Fähigkeit „ QNetworkProxy::TunnelingCapability “.

In Qt 4.4 war diese Funktion an den Proxy-Typ gebunden, aber seit Qt 4.5 ist es möglich, die Caching-Funktion eines Proxys durch den Aufruf von ` setCapabilities()` zu entfernen.

Siehe auch „ capabilities()“, „ type()“ und „ isCachingProxy()“.

QString QNetworkProxy::password() const

Gibt das für die Authentifizierung verwendete Passwort zurück.

Siehe auch user(), setPassword() und setUser().

quint16 QNetworkProxy::port() const

Gibt den Port des Proxy-Hosts zurück.

Siehe auch setHostName(), setPort() und hostName().

QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const

Gibt die Rohform des Headers headerName zurück. Ist kein solcher Header vorhanden oder handelt es sich bei dem Proxy nicht um den Typ HttpProxy oder HttpCachingProxy, wird ein leeres QByteArray zurückgegeben, das möglicherweise nicht von einem vorhandenen Header ohne Inhalt zu unterscheiden ist (verwenden Sie hasRawHeader(), um festzustellen, ob der Header vorhanden ist oder nicht).

Raw-Header können mit ` setRawHeader()` oder mit ` setHeader()` gesetzt werden.

Siehe auch ` header()` und ` setRawHeader()`.

QList<QByteArray> QNetworkProxy::rawHeaderList() const

Gibt eine Liste aller Raw-Header zurück, die in diesem Netzwerk-Proxy gesetzt sind. Die Liste ist in der Reihenfolge sortiert, in der die Header gesetzt wurden.

Wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist, wird ein leeres „ QList “ zurückgegeben.

Siehe auch hasRawHeader() und rawHeader().

[static] void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)

Legt die Netzwerk-Proxying-Einstellung auf Anwendungsebene auf „ networkProxy “ fest.

Wenn ein „ QAbstractSocket “ oder „ QTcpSocket “ den Typ „ QNetworkProxy::DefaultProxy “ hat, wird der mit dieser Funktion festgelegte „ QNetworkProxy “ verwendet. Wenn Sie mehr Flexibilität bei der Festlegung des zu verwendenden Proxys wünschen, verwenden Sie die Klasse „ QNetworkProxyFactory “.

Das Festlegen eines Standard-Proxy-Werts mit dieser Funktion überschreibt die mit ` QNetworkProxyFactory::setApplicationProxyFactory` festgelegte Anwendungs-Proxy-Factory und deaktiviert die Verwendung eines System-Proxys.

Siehe auch QNetworkProxyFactory, applicationProxy(), QAbstractSocket::setProxy() und QTcpServer::setProxy().

void QNetworkProxy::setCapabilities(QNetworkProxy::Capabilities capabilities)

Legt die Funktionen dieses Proxys auf „ capabilities “ fest.

Siehe auch setType() und capabilities().

void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)

Setzt den Wert des bekannten Headers „ header “ auf „ value “ und überschreibt dabei alle zuvor festgelegten Header. Dieser Vorgang setzt außerdem den entsprechenden Raw-HTTP-Header.

Wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist, hat dies keine Auswirkung.

Siehe auch „ QNetworkRequest::KnownHeaders“ , „ setRawHeader()“ und „ header()“.

[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)

Legt „ newHeaders “ als Header in dieser Netzwerkanfrage fest und überschreibt dabei alle zuvor festgelegten Header.

Wenn einige Header mit den bekannten Headern übereinstimmen, werden die Werte geparst und die entsprechende geparste Form ebenfalls gesetzt.

Wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist, hat dies keine Auswirkung.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch „ headers()“ und „ QNetworkRequest::KnownHeaders “.

[since 6.8] void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.8 eingeführt.

void QNetworkProxy::setHostName(const QString &hostName)

Legt den Hostnamen des Proxy-Hosts auf hostName fest.

Siehe auch hostName(), setPort() und port().

void QNetworkProxy::setPassword(const QString &password)

Legt das Passwort für die Proxy-Authentifizierung auf „ password “ fest.

Siehe auch user(), setUser() und password().

void QNetworkProxy::setPort(quint16 port)

Legt den Port des Proxy-Hosts auf port fest.

Siehe auch hostName(), setHostName() und port().

void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)

Setzt den Header „ headerName “ auf den Wert „ headerValue “. Wenn „ headerName “ einem bekannten Header entspricht (siehe QNetworkRequest::KnownHeaders), wird das Rohformat geparst und der entsprechende „aufbereitete“ Header ebenfalls gesetzt.

Beispiel:

request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));

wird auch der bekannte Header `LastModifiedHeader` auf das ` QDateTime `-Objekt des geparsten Datums gesetzt.

Hinweis: Das zweimaligeSetzen desselben Headers überschreibt die vorherige Einstellung. Um das Verhalten mehrerer HTTP-Header mit demselben Namen zu erzielen, sollten Sie die beiden Werte durch ein Komma („,“) trennen und einen einzigen Raw-Header setzen.

Wenn der Proxy nicht vom Typ „ HttpProxy “ oder „ HttpCachingProxy “ ist, hat dies keine Auswirkung.

Siehe auch QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader() und rawHeader().

void QNetworkProxy::setType(QNetworkProxy::ProxyType type)

Legt den Proxy-Typ für diese Instanz auf „ type “ fest.

Beachten Sie, dass eine Änderung des Proxy-Typs die vom Objekt ` QNetworkProxy ` verwalteten Funktionen nicht verändert, sofern diese bereits mit ` setCapabilities()` festgelegt wurden.

Siehe auch „ type()“ und „ setCapabilities()“.

void QNetworkProxy::setUser(const QString &user)

Legt den Benutzernamen für die Proxy-Authentifizierung auf „ user “ fest.

Siehe auch user(), setPassword() und password().

[noexcept] void QNetworkProxy::swap(QNetworkProxy &other)

Ersetzt diese Netzwerk-Proxy-Instanz durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

QNetworkProxy::ProxyType QNetworkProxy::type() const

Gibt den Proxy-Typ für diese Instanz zurück.

Siehe auch „ setType()“.

QString QNetworkProxy::user() const

Gibt den für die Authentifizierung verwendeten Benutzernamen zurück.

Siehe auch setUser(), setPassword() und password().

bool QNetworkProxy::operator!=(const QNetworkProxy &other) const

Vergleicht den Wert dieses Netzwerk-Proxys mit other und gibt true zurück, falls sie voneinander abweichen.

QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)

Weist diesem Netzwerkproxy den Wert des Netzwerkproxy- other s zu.

bool QNetworkProxy::operator==(const QNetworkProxy &other) const

Vergleicht den Wert dieses Netzwerk-Proxys mit other und gibt „ true “ zurück, wenn beide übereinstimmen (gleicher Proxy-Typ, gleicher Server sowie gleicher Benutzername und dasselbe Passwort).

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