QNetworkProxyFactory Class

Die Klasse QNetworkProxyFactory ermöglicht eine feinkörnige Auswahl von Proxys. Mehr...

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

Öffentliche Funktionen

QNetworkProxyFactory()
virtual ~QNetworkProxyFactory()
virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0

Statische öffentliche Mitglieder

QList<QNetworkProxy> proxyForQuery(const QNetworkProxyQuery &query)
void setApplicationProxyFactory(QNetworkProxyFactory *factory)
void setUseSystemConfiguration(bool enable)
QList<QNetworkProxy> systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())
bool usesSystemConfiguration()

Detaillierte Beschreibung

QNetworkProxyFactory ist eine Erweiterung von QNetworkProxy, die es Anwendungen ermöglicht, eine feinere Kontrolle darüber zu haben, welche Proxy-Server verwendet werden, abhängig von dem Socket, der den Proxy anfordert. Dadurch kann eine Anwendung unterschiedliche Einstellungen vornehmen, z.B. je nach Protokoll oder Zielhostname.

QNetworkProxyFactory kann global für eine Anwendung gesetzt werden, in diesem Fall überschreibt es alle globalen Proxies, die mit QNetworkProxy::setApplicationProxy() gesetzt wurden. Wenn sie global gesetzt ist, werden alle mit Qt erstellten Sockets die Fabrik abfragen, um den zu verwendenden Proxy zu bestimmen.

Eine Factory kann auch in bestimmten Frameworks gesetzt werden, die mehrere Verbindungen unterstützen, wie z.B. QNetworkAccessManager. Wenn sie für ein solches Objekt gesetzt wird, wird die Fabrik nur für Sockets abgefragt, die von diesem Framework erstellt wurden.

System-Proxies

Sie können eine Fabrik so konfigurieren, dass die Einstellungen des System-Proxys verwendet werden. Rufen Sie die Funktion setUseSystemConfiguration() mit true auf, um dieses Verhalten zu aktivieren, oder false, um es zu deaktivieren.

In ähnlicher Weise können Sie eine Fabrik verwenden, um Abfragen direkt an den System-Proxy zu stellen, indem Sie die Funktion systemProxyForQuery() aufrufen.

Achtung! Abhängig von der Konfiguration des Benutzersystems kann die Verwendung von System-Proxy-Funktionen auf bestimmten Plattformen Einschränkungen unterworfen sein. Die Dokumentation systemProxyForQuery() enthält eine Liste dieser Einschränkungen für die betroffenen Plattformen.

Dokumentation der Mitgliedsfunktionen

QNetworkProxyFactory::QNetworkProxyFactory()

Erzeugt ein QNetworkProxyFactory-Objekt.

Da QNetworkProxyFactory eine abstrakte Klasse ist, können Sie Objekte vom Typ QNetworkProxyFactory nicht direkt erstellen.

[virtual noexcept] QNetworkProxyFactory::~QNetworkProxyFactory()

Zerstört das Objekt QNetworkProxyFactory.

[static] QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuery &query)

Diese Funktion nimmt die Anfrage query entgegen, prüft die Details des Socket- oder Anfragetyps und gibt eine Liste von QNetworkProxy Objekten zurück, die die zu verwendenden Proxy-Server in der Reihenfolge ihrer Präferenz angeben.

[pure virtual] QList<QNetworkProxy> QNetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery())

Diese Funktion nimmt die Anfrage query entgegen, prüft die Details des Socket- oder Anfragetyps und gibt eine Liste von QNetworkProxy Objekten zurück, die die zu verwendenden Proxy-Server in der Reihenfolge ihrer Präferenz angeben.

Wenn Sie diese Klasse neu implementieren, achten Sie darauf, mindestens ein Element zurückzugeben.

Wenn Sie keine bessere Proxy-Alternative ermitteln können, verwenden Sie QNetworkProxy::DefaultProxy, was dem Code, der einen Proxy abfragt, mitteilt, eine höhere Alternative zu verwenden. Wenn diese Fabrik beispielsweise auf ein QNetworkAccessManager Objekt gesetzt ist, weist DefaultProxy sie an, die Proxy-Einstellungen auf Anwendungsebene abzufragen.

Wenn diese Factory als Application Proxy Factory eingestellt ist, haben DefaultProxy und NoProxy die gleiche Bedeutung.

[static] void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)

Setzt die anwendungsweite Proxy-Factory auf factory. Diese Funktion übernimmt das Eigentum an diesem Objekt und löscht es bei Bedarf.

Der anwendungsweite Proxy wird als letzter Ausweg verwendet, wenn alle anderen Anfragen zur Proxyauswahl QNetworkProxy::DefaultProxy zurückgegeben haben. Zum Beispiel kann für QTcpSocket Objekte ein Proxy mit QTcpSocket::setProxy gesetzt werden, aber wenn keiner gesetzt ist, wird die mit dieser Funktion gesetzte Proxy-Factory-Klasse abgefragt.

Wenn Sie eine Proxy-Fabrik mit dieser Funktion setzen, werden alle Proxies auf Anwendungsebene, die mit QNetworkProxy::setApplicationProxy gesetzt wurden, überschrieben, und usesSystemConfiguration() gibt false zurück.

Siehe auch QNetworkProxy::setApplicationProxy(), QAbstractSocket::proxy(), und QAbstractSocket::setProxy().

[static] void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)

Aktiviert die Verwendung der plattformspezifischen Proxy-Einstellungen, und nur diese. Siehe systemProxyForQuery() für weitere Informationen.

Der Aufruf dieser Funktion, wenn enable auf true gesetzt ist, setzt jeden Proxy oder QNetworkProxyFactory zurück, der bereits gesetzt ist.

Hinweis: In der Dokumentation systemProxyForQuery() finden Sie eine Liste der Einschränkungen im Zusammenhang mit der Verwendung von System-Proxys.

[static] QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())

Diese Funktion nimmt die Anfrage query entgegen, prüft die Details des Socket- oder Anfragetyps und gibt eine Liste von QNetworkProxy Objekten zurück, die die zu verwendenden Proxy-Server in der Reihenfolge ihrer Präferenz angeben.

Diese Funktion kann verwendet werden, um die plattformspezifischen Proxy-Einstellungen zu ermitteln. Diese Funktion verwendet die vom Betriebssystem bereitgestellten Bibliotheken, um den Proxy für eine gegebene Verbindung zu bestimmen, falls solche Bibliotheken existieren. Ist dies nicht der Fall, gibt diese Funktion lediglich ein QNetworkProxy vom Typ QNetworkProxy::NoProxy zurück.

Unter Windows verwendet diese Funktion die Funktionen der WinHTTP-DLL. Trotz ihres Namens empfiehlt Microsoft, sie für alle Anwendungen zu verwenden, die Netzwerkverbindungen benötigen, nicht nur für HTTP. Dabei werden die Proxy-Einstellungen berücksichtigt, die mit dem Tool proxycfg.exe in der Registrierung festgelegt wurden. Wenn diese Einstellungen nicht gefunden werden, versucht diese Funktion, die Einstellungen des Internet Explorers zu erhalten und zu verwenden.

Unter macOS bezieht diese Funktion die Proxy-Einstellungen mit Hilfe des CFNetwork-Frameworks von Apple. Sie wendet die FTP-, HTTP- und HTTPS-Proxy-Konfigurationen für Abfragen an, die das Protokoll-Tag "ftp", "http" bzw. "https" enthalten. Wenn der SOCKS-Proxy in dieser Konfiguration aktiviert ist, verwendet diese Funktion den SOCKS-Server für alle Abfragen. Wenn SOCKS nicht aktiviert ist, wird der HTTPS-Proxy für alle TcpSocket- und UrlRequest-Abfragen verwendet.

Auf Systemen, die mit libproxy-Unterstützung konfiguriert sind, verlässt sich diese Funktion auf libproxy, um die Proxy-Einstellungen zu erhalten. Abhängig von den libproxy-Konfigurationen kann dies wiederum an Desktop-Einstellungen, Umgebungsvariablen usw. delegiert werden.

Auf anderen Systemen holt sich diese Funktion die Proxy-Einstellungen aus der Umgebungsvariablen "http_proxy". Diese Variable muss eine URL sein, die eines der folgenden Schemata verwendet: "http", "socks5" oder "socks5h".

Beschränkungen

Dies sind die Einschränkungen für die aktuelle Version dieser Funktion. Zukünftige Versionen von Qt können einige der hier aufgeführten Einschränkungen aufheben.

  • Auf Windows-Plattformen kann die Ausführung dieser Funktion je nach Konfiguration des Systems des Benutzers mehrere Sekunden dauern.

[static] bool QNetworkProxyFactory::usesSystemConfiguration()

Gibt zurück, ob die Verwendung von plattformspezifischen Proxy-Einstellungen aktiviert ist.

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