QNetworkAccessManager Class
Die Klasse QNetworkAccessManager ermöglicht es der Anwendung, Netzwerkanfragen zu senden und Antworten zu empfangen. Mehr...
Kopfzeile: | #include <QNetworkAccessManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Vererbt: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Ausgeschiedene Mitglieder
- QNetworkAccessManager ist Teil der Network Programming API.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
enum | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
Öffentliche Funktionen
QNetworkAccessManager(QObject *parent = nullptr) | |
virtual | ~QNetworkAccessManager() |
void | addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts) |
bool | autoDeleteReplies() const |
QAbstractNetworkCache * | cache() const |
void | clearAccessCache() |
void | clearConnectionCache() |
void | connectToHost(const QString &hostName, quint16 port = 80) |
void | connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()) |
void | connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName) |
QNetworkCookieJar * | cookieJar() const |
QNetworkReply * | deleteResource(const QNetworkRequest &request) |
void | enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString()) |
QNetworkReply * | get(const QNetworkRequest &request) |
(since 6.7) QNetworkReply * | get(const QNetworkRequest &request, QIODevice *data) |
(since 6.7) QNetworkReply * | get(const QNetworkRequest &request, const QByteArray &data) |
QNetworkReply * | head(const QNetworkRequest &request) |
bool | isStrictTransportSecurityEnabled() const |
bool | isStrictTransportSecurityStoreEnabled() const |
QNetworkReply * | post(const QNetworkRequest &request, QIODevice *data) |
QNetworkReply * | post(const QNetworkRequest &request, QHttpMultiPart *multiPart) |
QNetworkReply * | post(const QNetworkRequest &request, const QByteArray &data) |
(since 6.8) QNetworkReply * | post(const QNetworkRequest &request, std::nullptr_t nptr) |
QNetworkProxy | proxy() const |
QNetworkProxyFactory * | proxyFactory() const |
QNetworkReply * | put(const QNetworkRequest &request, QIODevice *data) |
QNetworkReply * | put(const QNetworkRequest &request, QHttpMultiPart *multiPart) |
QNetworkReply * | put(const QNetworkRequest &request, const QByteArray &data) |
(since 6.8) QNetworkReply * | put(const QNetworkRequest &request, std::nullptr_t nptr) |
QNetworkRequest::RedirectPolicy | redirectPolicy() const |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr) |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart) |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data) |
void | setAutoDeleteReplies(bool shouldAutoDelete) |
void | setCache(QAbstractNetworkCache *cache) |
void | setCookieJar(QNetworkCookieJar *cookieJar) |
void | setProxy(const QNetworkProxy &proxy) |
void | setProxyFactory(QNetworkProxyFactory *factory) |
void | setRedirectPolicy(QNetworkRequest::RedirectPolicy policy) |
void | setStrictTransportSecurityEnabled(bool enabled) |
void | setTransferTimeout(int timeout) |
(since 6.7) void | setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout) |
QList<QHstsPolicy> | strictTransportSecurityHosts() const |
virtual QStringList | supportedSchemes() const |
int | transferTimeout() const |
(since 6.7) std::chrono::milliseconds | transferTimeoutAsDuration() const |
Signale
void | authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator) |
void | encrypted(QNetworkReply *reply) |
void | finished(QNetworkReply *reply) |
void | preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator) |
void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
void | sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) |
Geschützte Funktionen
virtual QNetworkReply * | createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr) |
Detaillierte Beschreibung
Die Netzwerkzugriffs-API ist um ein QNetworkAccessManager-Objekt herum aufgebaut, das die allgemeine Konfiguration und die Einstellungen für die von ihm gesendeten Anfragen enthält. Es enthält die Proxy- und Cache-Konfiguration sowie die damit verbundenen Signale und Antwortsignale, die zur Überwachung des Fortschritts einer Netzwerkoperation verwendet werden können. Eine QNetworkAccessManager-Instanz sollte für die gesamte Qt-Anwendung ausreichend sein. Da QNetworkAccessManager auf QObject basiert, kann er nur von dem Thread verwendet werden, zu dem er gehört.
Sobald ein QNetworkAccessManager-Objekt erstellt wurde, kann die Anwendung es verwenden, um Anfragen über das Netzwerk zu senden. Es wird eine Gruppe von Standardfunktionen bereitgestellt, die eine Anfrage und optionale Daten entgegennehmen und jeweils ein QNetworkReply Objekt zurückgeben. Das zurückgegebene Objekt wird verwendet, um alle Daten zu erhalten, die als Antwort auf die entsprechende Anfrage zurückgegeben werden.
Ein einfaches Herunterladen aus dem Netzwerk kann mit folgenden Funktionen durchgeführt werden:
QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, &QNetworkAccessManager::finished, this, &MyClass::replyFinished); manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
QNetworkAccessManager hat eine asynchrone API. Wenn der obige replyFinished
Slot aufgerufen wird, wird als Parameter das QNetworkReply Objekt übergeben, das die heruntergeladenen Daten sowie Metadaten (Header usw.) enthält.
Hinweis: Nach Beendigung der Anforderung ist der Benutzer dafür verantwortlich, das Objekt QNetworkReply zu einem geeigneten Zeitpunkt zu löschen. Löschen Sie es nicht direkt innerhalb des mit finished() verbundenen Slots. Sie können die Funktion deleteLater() verwenden.
Hinweis: QNetworkAccessManager stellt die empfangenen Anfragen in eine Warteschlange. Die Anzahl der parallel ausgeführten Anfragen ist abhängig vom Protokoll. Derzeit werden für das HTTP-Protokoll auf Desktop-Plattformen 6 Anfragen parallel für eine Host/Port-Kombination ausgeführt.
Ein ausführlicheres Beispiel, vorausgesetzt, der Manager ist bereits vorhanden, kann sein:
QNetworkRequest request; request.setUrl(QUrl("http://qt-project.org")); request.setRawHeader("User-Agent", "MyOwnBrowser 1.0"); QNetworkReply *reply = manager->get(request); connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead); connect(reply, &QNetworkReply::errorOccurred, this, &MyClass::slotError); connect(reply, &QNetworkReply::sslErrors, this, &MyClass::slotSslErrors);
Siehe auch QNetworkRequest, QNetworkReply, und QNetworkProxy.
Dokumentation der Mitgliedstypen
enum QNetworkAccessManager::Operation
Gibt den Vorgang an, den diese Antwort bearbeitet.
Konstante | Wert | Beschreibung |
---|---|---|
QNetworkAccessManager::HeadOperation | 1 | Abruf von Kopfzeilen (erstellt mit head()) |
QNetworkAccessManager::GetOperation | 2 | Abrufen von Kopfzeilen und Herunterladen von Inhalten (erstellt mit get()) |
QNetworkAccessManager::PutOperation | 3 | Upload von Inhalten (erstellt mit put()) |
QNetworkAccessManager::PostOperation | 4 | Senden des Inhalts eines HTML-Formulars zur Verarbeitung per HTTP POST (erstellt mit post()) |
QNetworkAccessManager::DeleteOperation | 5 | Löschen von Inhalten (erstellt mit deleteResource()) |
QNetworkAccessManager::CustomOperation | 6 | Benutzerdefinierte Operation (erstellt mit sendCustomRequest()) |
Siehe auch QNetworkReply::operation().
Dokumentation der Mitgliedsfunktionen
[explicit]
QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)
Konstruiert ein QNetworkAccessManager-Objekt, das das Zentrum der Netzwerkzugriffs-API ist, und setzt parent als übergeordnetes Objekt.
[virtual noexcept]
QNetworkAccessManager::~QNetworkAccessManager()
Zerstört das Objekt QNetworkAccessManager und gibt alle Ressourcen frei. Beachten Sie, dass QNetworkReply Objekte, die von dieser Klasse zurückgegeben werden, dieses Objekt als ihre Eltern haben, was bedeutet, dass sie zusammen mit ihm gelöscht werden, wenn Sie nicht QObject::setParent() für sie aufrufen.
void QNetworkAccessManager::addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)
Fügt Richtlinien für HTTP Strict Transport Security in den HSTS-Cache ein. knownHosts enthält die bekannten Hosts, die über QHstsPolicy Informationen haben.
Hinweis: Eine abgelaufene Richtlinie entfernt einen bekannten Host aus dem Cache, falls dieser zuvor vorhanden war.
Hinweis: Während der Verarbeitung von HTTP-Antworten kann QNetworkAccessManager auch den HSTS-Cache aktualisieren, indem es auslaufende Richtlinien entfernt oder aktualisiert oder neue knownHosts einführt. Die derzeitige Implementierung ist daher servergesteuert, Client-Code kann QNetworkAccessManager mit zuvor bekannten oder entdeckten Richtlinien versorgen, aber diese Informationen können durch "Strict-Transport-Security"-Antwort-Header überschrieben werden.
Siehe auch addStrictTransportSecurityHosts(), enableStrictTransportSecurityStore(), und QHstsPolicy.
[signal]
void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
Dieses Signal wird immer dann ausgegeben, wenn ein endgültiger Server eine Authentifizierung verlangt, bevor er die angeforderten Inhalte liefert. Der Slot, der mit diesem Signal verbunden ist, sollte die Anmeldeinformationen für den Inhalt (die durch die Untersuchung des reply Objekts ermittelt werden können) in das authenticator Objekt eintragen.
QNetworkAccessManager Der Slot, der mit diesem Signal verbunden ist, sollte die Zugangsdaten für den Inhalt (die durch Einsicht in das Objekt ermittelt werden können) in das Objekt eintragen. Wenn die Anmeldeinformationen abgelehnt werden, wird dieses Signal erneut ausgegeben.
Hinweis: Damit die Anfrage keine Anmeldeinformationen sendet, dürfen Sie nicht setUser() oder setPassword() für das authenticator Objekt aufrufen. Dies führt dazu, dass das Signal finished() mit einem QNetworkReply mit Fehler AuthenticationRequiredError ausgegeben wird.
Hinweis: Es ist nicht möglich, eine QueuedConnection zu verwenden, um sich mit diesem Signal zu verbinden, da die Verbindung fehlschlägt, wenn der Authenticator nicht mit neuen Informationen gefüllt ist, wenn das Signal zurückkehrt.
Siehe auch proxyAuthenticationRequired(), QAuthenticator::setUser(), und QAuthenticator::setPassword().
bool QNetworkAccessManager::autoDeleteReplies() const
Gibt den Wert true zurück, wenn QNetworkAccessManager derzeit so konfiguriert ist, dass QNetworkReplies automatisch gelöscht werden, andernfalls false.
Siehe auch setAutoDeleteReplies und QNetworkRequest::AutoDeleteReplyOnFinishAttribute.
QAbstractNetworkCache *QNetworkAccessManager::cache() const
Gibt den Cache zurück, in dem die aus dem Netz bezogenen Daten gespeichert werden.
Siehe auch setCache().
void QNetworkAccessManager::clearAccessCache()
Leert den internen Zwischenspeicher für Authentifizierungsdaten und Netzwerkverbindungen.
Diese Funktion ist nützlich für die Durchführung von Autotests.
Siehe auch clearConnectionCache().
void QNetworkAccessManager::clearConnectionCache()
Leert den internen Cache der Netzwerkverbindungen. Im Gegensatz zu clearAccessCache() bleiben die Authentifizierungsdaten erhalten.
Siehe auch clearAccessCache().
void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)
Stellt eine Verbindung zu dem durch hostName angegebenen Host an Port port her. Diese Funktion ist nützlich, um den TCP-Handshake zu einem Host abzuschließen, bevor die HTTP-Anfrage gestellt wird, was zu einer geringeren Netzwerklatenz führt.
Hinweis: Diese Funktion hat keine Möglichkeit, Fehler zu melden.
Siehe auch connectToHostEncrypted(), get(), post(), put(), und deleteResource().
void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
Initiiert eine Verbindung zu dem durch hostName angegebenen Host an Port port unter Verwendung von sslConfiguration. Diese Funktion ist nützlich, um den TCP- und SSL-Handshake zu einem Host abzuschließen, bevor die HTTPS-Anfrage gestellt wird, was zu einer geringeren Netzwerklatenz führt.
Hinweis: Das Vorschalten einer HTTP/2-Verbindung kann durch den Aufruf von setAllowedNextProtocols() auf sslConfiguration erfolgen, wobei QSslConfiguration::ALPNProtocolHTTP2 in der Liste der zulässigen Protokolle enthalten ist. Bei der Verwendung von HTTP/2 ist eine einzige Verbindung pro Host ausreichend, d.h. ein mehrfacher Aufruf dieser Methode pro Host führt nicht zu schnelleren Netzwerktransaktionen.
Hinweis: Diese Funktion hat keine Möglichkeit, Fehler zu melden.
Siehe auch connectToHost(), get(), post(), put(), und deleteResource().
void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
Dies ist eine überladene Funktion.
Initiiert eine Verbindung zu dem durch hostName angegebenen Host an Port port unter Verwendung von sslConfiguration, wobei peerName als Hostname für die Zertifikatsüberprüfung festgelegt ist. Diese Funktion ist nützlich, um den TCP- und SSL-Handshake zu einem Host abzuschließen, bevor die HTTPS-Anfrage gestellt wird, was zu einer geringeren Netzwerklatenz führt.
Hinweis: Das Vorschalten einer HTTP/2-Verbindung kann durch den Aufruf von setAllowedNextProtocols() auf sslConfiguration erfolgen, wobei QSslConfiguration::ALPNProtocolHTTP2 in der Liste der zulässigen Protokolle enthalten ist. Bei der Verwendung von HTTP/2 ist eine einzige Verbindung pro Host ausreichend, d.h. ein mehrfacher Aufruf dieser Methode pro Host führt nicht zu schnelleren Netzwerktransaktionen.
Hinweis: Diese Funktion hat keine Möglichkeit, Fehler zu melden.
Siehe auch connectToHost(), get(), post(), put(), und deleteResource().
QNetworkCookieJar *QNetworkAccessManager::cookieJar() const
Gibt die QNetworkCookieJar zurück, die verwendet wird, um Cookies zu speichern, die aus dem Netz bezogen wurden, sowie Cookies, die gerade gesendet werden sollen.
Siehe auch setCookieJar().
[virtual protected]
QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)
Gibt ein neues QNetworkReply Objekt zurück, um die Operation op und die Anfrage originalReq zu bearbeiten. Das Gerät outgoingData ist bei Get- und Head-Anfragen immer 0, ist aber der Wert, der bei diesen Operationen an post() und put() übergeben wird (bei den QByteArray -Varianten wird ein QBuffer -Objekt übergeben).
Die Standardimplementierung ruft QNetworkCookieJar::cookiesForUrl() für das mit setCookieJar() gesetzte Cookie-Gefäß auf, um die Cookies zu erhalten, die an den entfernten Server gesendet werden sollen.
Das zurückgegebene Objekt muss sich in einem offenen Zustand befinden.
QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)
Sendet eine Anfrage zum Löschen der Ressource, die durch die URL von request identifiziert wird.
Hinweis: Diese Funktion ist derzeit nur für HTTP verfügbar und führt eine HTTP-DELETE-Anforderung aus.
Siehe auch get(), post(), put(), und sendCustomRequest().
void QNetworkAccessManager::enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())
Wenn enabled gleich true
ist, verwendet der interne HSTS-Cache einen dauerhaften Speicher zum Lesen und Schreiben von HSTS-Richtlinien. storeDir legt fest, wo sich dieser Speicher befindet. Der Standardspeicherort ist durch QStandardPaths::CacheLocation definiert. Wenn es keinen beschreibbaren QStandartPaths::CacheLocation gibt und storeDir ein leerer String ist, wird der Speicher im Arbeitsverzeichnis des Programms abgelegt.
Hinweis: Wenn der HSTS-Cache zum Zeitpunkt der Aktivierung des persistenten Speichers bereits HSTS-Richtlinien enthält, werden diese Richtlinien im Speicher beibehalten. Wenn sowohl Cache als auch Speicher dieselben bekannten Hosts enthalten, werden die Richtlinien aus dem Cache als aktueller angesehen (und überschreiben somit die vorherigen Werte im Speicher). Wenn dieses Verhalten unerwünscht ist, aktivieren Sie den HSTS-Speicher, bevor Sie Strict Transport Security aktivieren. Standardmäßig ist die dauerhafte Speicherung von HSTS-Richtlinien deaktiviert.
Siehe auch isStrictTransportSecurityStoreEnabled(), setStrictTransportSecurityEnabled(), und QStandardPaths::standardLocations().
[signal]
void QNetworkAccessManager::encrypted(QNetworkReply *reply)
Dieses Signal wird ausgesendet, wenn eine SSL/TLS-Sitzung den ersten Handshake erfolgreich abgeschlossen hat. Zu diesem Zeitpunkt sind noch keine Nutzdaten übertragen worden. Das Signal kann verwendet werden, um zusätzliche Überprüfungen der Zertifikatskette durchzuführen, z. B. um Benutzer zu benachrichtigen, wenn sich das Zertifikat für eine Website geändert hat. Der Parameter reply gibt an, welches Netz für die Antwort zuständig ist. Entspricht die Antwort nicht den erwarteten Kriterien, sollte sie durch Aufruf von QNetworkReply::abort() durch einen mit diesem Signal verbundenen Slot abgebrochen werden. Die verwendete SSL-Konfiguration kann mit der Methode QNetworkReply::sslConfiguration() eingesehen werden.
Intern kann QNetworkAccessManager mehrere Verbindungen zu einem Server öffnen, um die parallele Verarbeitung von Anfragen zu ermöglichen. Diese Verbindungen können wiederverwendet werden, was bedeutet, dass das encrypted()-Signal nicht ausgegeben werden würde. Dies bedeutet, dass Sie dieses Signal garantiert nur für die erste Verbindung zu einer Site während der Lebensdauer von QNetworkAccessManager erhalten.
Siehe auch QSslSocket::encrypted() und QNetworkReply::encrypted().
[signal]
void QNetworkAccessManager::finished(QNetworkReply *reply)
Dieses Signal wird immer dann ausgegeben, wenn eine anstehende Netzantwort beendet ist. Der Parameter reply enthält einen Zeiger auf die Antwort, die gerade beendet wurde. Dieses Signal wird in Verbindung mit dem Signal QNetworkReply::finished() ausgegeben.
Siehe QNetworkReply::finished() für Informationen über den Status, in dem sich das Objekt befinden wird.
Hinweis: Löschen Sie nicht das Objekt reply in dem mit diesem Signal verbundenen Slot. Verwenden Sie deleteLater().
Siehe auch QNetworkReply::finished() und QNetworkReply::error().
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)
Stellt eine Anfrage, um den Inhalt des Ziels request zu erhalten und gibt ein neues QNetworkReply Objekt zurück, das zum Lesen geöffnet ist und das Signal readyRead() ausgibt, sobald neue Daten ankommen.
Der Inhalt sowie die zugehörigen Kopfzeilen werden heruntergeladen.
Siehe auch post(), put(), deleteResource(), und sendCustomRequest().
[since 6.7]
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, QIODevice *data)
Dies ist eine überladene Funktion.
Hinweis: Eine GET-Anforderung mit einem Nachrichtentext wird nicht zwischengespeichert.
Hinweis: Wenn die Anfrage umgeleitet wird, wird der Nachrichtentext nur beibehalten, wenn der Statuscode 307 oder 308 ist.
Diese Funktion wurde in Qt 6.7 eingeführt.
[since 6.7]
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, const QByteArray &data)
Dies ist eine überladene Funktion.
Hinweis: Eine GET-Anforderung mit einem Nachrichtentext wird nicht zwischengespeichert.
Hinweis: Wenn die Anfrage umgeleitet wird, wird der Nachrichtentext nur beibehalten, wenn der Statuscode 307 oder 308 ist.
Diese Funktion wurde in Qt 6.7 eingeführt.
QNetworkReply *QNetworkAccessManager::head(const QNetworkRequest &request)
Stellt eine Anfrage, um die Netzwerk-Header für request zu erhalten und gibt ein neues QNetworkReply Objekt zurück, das diese Header enthält.
Die Funktion ist nach der zugehörigen HTTP-Anfrage (HEAD) benannt.
bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const
Gibt true zurück, wenn HTTP Strict Transport Security (HSTS) aktiviert wurde. Standardmäßig ist HSTS deaktiviert.
Siehe auch setStrictTransportSecurityEnabled().
bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const
Gibt true zurück, wenn der HSTS-Cache einen permanenten Speicher zum Laden und Speichern von HSTS-Richtlinien verwendet.
Siehe auch enableStrictTransportSecurityStore().
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)
Sendet eine HTTP-POST-Anfrage an das durch request angegebene Ziel und gibt ein neues, zum Lesen geöffnetes QNetworkReply -Objekt zurück, das die vom Server gesendete Antwort enthält. Der Inhalt des Geräts data wird auf den Server hochgeladen.
data muss zum Lesen geöffnet sein und gültig bleiben, bis das Signal finished() für diese Antwort ausgegeben wird.
Hinweis: Das Senden einer POST-Anfrage bei anderen Protokollen als HTTP und HTTPS ist undefiniert und wird wahrscheinlich fehlschlagen.
Siehe auch get(), put(), deleteResource(), und sendCustomRequest().
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
Dies ist eine überladene Funktion.
Sendet den Inhalt der Nachricht multiPart an das durch request angegebene Ziel.
Dies kann für das Senden von MIME-Multipart-Nachrichten über HTTP verwendet werden.
Siehe auch QHttpMultiPart, QHttpPart, und put().
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)
Dies ist eine überladene Funktion.
Sendet den Inhalt des Byte-Arrays data an das durch request angegebene Ziel.
[since 6.8]
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, std::nullptr_t nptr)
Dies ist eine überladene Funktion.
Sendet die durch request angegebene POST-Anfrage ohne Body und gibt ein neues QNetworkReply Objekt zurück.
Diese Funktion wurde in Qt 6.8 eingeführt.
[signal]
void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
Dieses Signal wird ausgegeben, wenn beim SSL/TLS-Handshake eine PSK-Ciphersuite ausgehandelt wird und daher eine PSK-Authentifizierung erforderlich ist. Das Objekt reply ist das QNetworkReply, das solche Ciphersuites aushandelt.
Bei der Verwendung von PSK muss der Client dem Server eine gültige Identität und einen gültigen Pre-Shared Key senden, damit der SSL-Handshake fortgesetzt werden kann. Anwendungen können diese Informationen in einem mit diesem Signal verbundenen Slot bereitstellen, indem sie das übergebene authenticator Objekt entsprechend ihren Bedürfnissen ausfüllen.
Hinweis: Das Ignorieren dieses Signals oder die Nichtbereitstellung der erforderlichen Anmeldeinformationen führt zum Scheitern des Handshakes und damit zum Abbruch der Verbindung.
Hinweis: Das Objekt authenticator ist Eigentum der Antwort und darf von der Anwendung nicht gelöscht werden.
Siehe auch QSslPreSharedKeyAuthenticator.
QNetworkProxy QNetworkAccessManager::proxy() const
Gibt den QNetworkProxy zurück, der für die über dieses QNetworkAccessManager Objekt gesendeten Anfragen verwendet wird. Der Standardwert für den Proxy ist QNetworkProxy::DefaultProxy.
Siehe auch setProxy(), setProxyFactory(), und proxyAuthenticationRequired().
[signal]
void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
Dieses Signal wird ausgegeben, wenn ein Proxy eine Authentifizierung anfordert und QNetworkAccessManager keine gültigen, zwischengespeicherten Anmeldeinformationen finden kann. Der Slot, der mit diesem Signal verbunden ist, sollte die Anmeldeinformationen für den Proxy proxy in das authenticator Objekt eintragen.
QNetworkAccessManager wird die Anmeldeinformationen intern zwischenspeichern. Wenn der Proxy das nächste Mal eine Authentifizierung anfordert, sendet QNetworkAccessManager automatisch dieselben Anmeldeinformationen, ohne das Signal proxyAuthenticationRequired erneut auszusenden.
Wenn der Proxy die Anmeldeinformationen ablehnt, sendet QNetworkAccessManager das Signal erneut.
Siehe auch proxy(), setProxy(), und authenticationRequired().
QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const
Gibt die Proxy-Fabrik zurück, die dieses QNetworkAccessManager Objekt verwendet, um die für Anfragen zu verwendenden Proxys zu bestimmen.
Beachten Sie, dass der von dieser Funktion zurückgegebene Zeiger von QNetworkAccessManager verwaltet wird und jederzeit gelöscht werden kann.
Siehe auch setProxyFactory() und proxy().
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)
Lädt den Inhalt von data auf das Ziel request hoch und gibt ein neues Objekt QNetworkReply zurück, das für die Antwort geöffnet wird.
data muss zum Lesen geöffnet sein, wenn diese Funktion aufgerufen wird, und muss gültig bleiben, bis das Signal finished() für diese Antwort ausgegeben wird.
Ob etwas aus dem zurückgegebenen Objekt gelesen werden kann, hängt vom Protokoll ab. Bei HTTP kann der Server eine kleine HTML-Seite senden, die anzeigt, dass der Upload erfolgreich war (oder nicht). Andere Protokolle werden wahrscheinlich Inhalte in ihren Antworten haben.
Hinweis: Bei HTTP wird mit dieser Anfrage eine PUT-Anfrage gesendet, die die meisten Server nicht zulassen. Formular-Upload-Mechanismen, einschließlich des Hochladens von Dateien über HTML-Formulare, verwenden den POST-Mechanismus.
Siehe auch get(), post(), deleteResource(), und sendCustomRequest().
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)
Dies ist eine überladene Funktion.
Sendet den Inhalt der Nachricht multiPart an das durch request angegebene Ziel.
Dies kann für das Senden von MIME-Multipart-Nachrichten über HTTP verwendet werden.
Siehe auch QHttpMultiPart, QHttpPart, und post().
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)
Dies ist eine überladene Funktion.
Sendet den Inhalt des Byte-Arrays data an das durch request angegebene Ziel.
[since 6.8]
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, std::nullptr_t nptr)
Dies ist eine überladene Funktion.
Sendet die durch request angegebene PUT-Anfrage ohne Body und gibt ein neues QNetworkReply Objekt zurück.
Diese Funktion wurde in Qt 6.8 eingeführt.
QNetworkRequest::RedirectPolicy QNetworkAccessManager::redirectPolicy() const
Gibt die Umleitungsrichtlinie zurück, die bei der Erstellung neuer Anfragen verwendet wird.
Siehe auch setRedirectPolicy() und QNetworkRequest::RedirectPolicy.
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)
Sendet eine benutzerdefinierte Anfrage an den Server, der durch die URL von request identifiziert wird.
Es liegt in der Verantwortung des Benutzers, eine verb an den Server zu senden, die gemäß der HTTP-Spezifikation gültig ist.
Diese Methode bietet die Möglichkeit, andere Verben als die üblichen zu senden, die über get() oder post() usw. bereitgestellt werden, z. B. das Senden eines HTTP-OPTIONS-Befehls.
Wenn data nicht leer ist, wird der Inhalt von data auf den Server hochgeladen; in diesem Fall müssen die Daten zum Lesen geöffnet sein und gültig bleiben, bis das Signal finished() für diese Antwort ausgegeben wird.
Hinweis: Diese Funktion ist derzeit nur für HTTP(S) verfügbar.
Siehe auch get(), post(), put(), und deleteResource().
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)
Dies ist eine überladene Funktion.
Sendet eine benutzerdefinierte Anfrage an den Server, der durch die URL von request identifiziert wird.
Sendet den Inhalt der Nachricht multiPart an das in request angegebene Ziel.
Dies kann zum Senden von MIME-Multipart-Nachrichten für benutzerdefinierte Verben verwendet werden.
Siehe auch QHttpMultiPart, QHttpPart, und put().
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
Dies ist eine überladene Funktion.
Sendet den Inhalt des Byte-Arrays data an das durch request angegebene Ziel.
void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)
Aktiviert oder deaktiviert die automatische Löschung von QNetworkReplies.
Das Setzen von shouldAutoDelete auf true ist dasselbe wie das Setzen des Attributs QNetworkRequest::AutoDeleteReplyOnFinishAttribute auf true bei allen zukünftigen QNetworkRequests, die an diese Instanz von QNetworkAccessManager übergeben werden, es sei denn, das Attribut wurde bereits explizit auf QNetworkRequest gesetzt.
Siehe auch autoDeleteReplies und QNetworkRequest::AutoDeleteReplyOnFinishAttribute.
void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)
Setzt den Netzwerk-Cache des Managers auf die angegebene cache. Der Cache wird für alle vom Manager gesendeten Anfragen verwendet.
Verwenden Sie diese Funktion, um das Netzwerk-Cache-Objekt auf eine Klasse zu setzen, die zusätzliche Funktionen implementiert, wie z. B. das Speichern der Cookies in einem permanenten Speicher.
Hinweis: QNetworkAccessManager übernimmt das Eigentum an dem Objekt cache.
QNetworkAccessManager Qt hat standardmäßig keinen gesetzten Cache. Qt bietet einen einfachen Festplatten-Cache, QNetworkDiskCache, der verwendet werden kann.
Siehe auch cache() und QNetworkRequest::CacheLoadControl.
void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)
Setzt das Cookie-Gefäß des Managers auf die angegebene cookieJar. Das Cookie-Jar wird von allen Anfragen verwendet, die vom Manager versandt werden.
Verwenden Sie diese Funktion, um das Cookie-Jar-Objekt auf eine Klasse zu setzen, die zusätzliche Funktionen implementiert, wie z. B. das Speichern der Cookies in einem permanenten Speicher.
Hinweis: QNetworkAccessManager übernimmt das Eigentum an dem Objekt cookieJar.
Wenn cookieJar sich im selben Thread wie dieses QNetworkAccessManager befindet, setzt es den Parent von cookieJar so, dass die Keksdose gelöscht wird, wenn dieses Objekt ebenfalls gelöscht wird. Wenn Sie Keksdosen zwischen verschiedenen QNetworkAccessManager Objekten gemeinsam nutzen wollen, sollten Sie nach dem Aufruf dieser Funktion die übergeordnete Datei der Keksdose auf 0 setzen.
QNetworkAccessManager Standardmäßig implementiert keine eigene Cookie-Richtlinie: Es akzeptiert alle vom Server gesendeten Cookies, solange sie wohlgeformt sind und die minimalen Sicherheitsanforderungen erfüllen (Cookie-Domain entspricht der der Anfrage und Cookie-Pfad entspricht der der Anfrage). Um Ihre eigene Sicherheitsrichtlinie zu implementieren, überschreiben Sie die virtuellen Funktionen QNetworkCookieJar::cookiesForUrl() und QNetworkCookieJar::setCookiesFromUrl(). Diese Funktionen werden von QNetworkAccessManager aufgerufen, wenn es ein neues Cookie entdeckt.
Siehe auch cookieJar(), QNetworkCookieJar::cookiesForUrl(), und QNetworkCookieJar::setCookiesFromUrl().
void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)
Legt den Proxy fest, der bei zukünftigen Anfragen an proxy verwendet werden soll. Dies hat keine Auswirkungen auf bereits gesendete Anfragen. Das Signal proxyAuthenticationRequired() wird ausgegeben, wenn der Proxy eine Authentifizierung verlangt.
Ein mit dieser Funktion gesetzter Proxy wird für alle von QNetworkAccessManager ausgegebenen Anfragen verwendet. In manchen Fällen kann es notwendig sein, je nach Art der Anfrage oder des Zielhosts unterschiedliche Proxys auszuwählen. In diesem Fall sollten Sie die Funktion setProxyFactory() verwenden.
Siehe auch proxy() und proxyAuthenticationRequired().
void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)
Setzt die Proxy-Fabrik für diese Klasse auf factory. Eine Proxy-Fabrik wird verwendet, um eine spezifischere Liste von Proxys zu bestimmen, die für eine bestimmte Anfrage verwendet werden sollen, anstatt zu versuchen, denselben Proxy-Wert für alle Anfragen zu verwenden.
Alle Anfragen, die von QNetworkAccessManager gesendet werden, haben den Typ QNetworkProxyQuery::UrlRequest.
Eine Proxy-Fabrik könnte zum Beispiel die folgenden Regeln anwenden
- Wenn die Zieladresse im lokalen Netz liegt (z. B. wenn der Hostname keine Punkte enthält oder wenn es sich um eine IP-Adresse im Bereich der Organisation handelt), wird zurückgegeben QNetworkProxy::NoProxy
- wenn die Anfrage FTP ist, einen FTP-Proxy
- ist die Anfrage HTTP oder HTTPS, wird ein HTTP-Proxy zurückgegeben
- Andernfalls wird ein SOCKSv5-Proxyserver zurückgegeben.
Die Lebensdauer des Objekts factory wird von QNetworkAccessManager verwaltet. Es wird das Objekt bei Bedarf gelöscht.
Hinweis: Wenn ein bestimmter Proxy mit setProxy() festgelegt wird, wird die Fabrik nicht verwendet.
Siehe auch proxyFactory(), setProxy(), und QNetworkProxyQuery.
void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
Setzt die Umleitungsrichtlinie des Managers auf die angegebene policy. Diese Richtlinie wirkt sich auf alle nachfolgenden, vom Manager erstellten Anfragen aus.
Verwenden Sie diese Funktion, um HTTP-Weiterleitungen auf der Ebene des Managers zu aktivieren oder zu deaktivieren.
Hinweis: Bei der Erstellung einer Anfrage hat QNetworkRequest::RedirectAttributePolicy die höchste Priorität, gefolgt von der Priorität der Richtlinie des Managers.
Der Standardwert ist QNetworkRequest::NoLessSafeRedirectPolicy. Kunden, die auf eine manuelle Weiterleitung angewiesen sind, wird empfohlen, diese Richtlinie explizit in ihrem Code zu setzen.
Siehe auch redirectPolicy() und QNetworkRequest::RedirectPolicy.
void QNetworkAccessManager::setStrictTransportSecurityEnabled(bool enabled)
Wenn enabled true
ist, folgt QNetworkAccessManager der HTTP Strict Transport Security Policy (HSTS, RFC6797). Bei der Verarbeitung einer Anfrage ersetzt QNetworkAccessManager automatisch das "http"-Schema durch "https" und verwendet einen sicheren Transport für HSTS-Hosts. Wenn es explizit eingestellt ist, wird Port 80 durch Port 443 ersetzt.
Wenn HSTS aktiviert ist, aktualisiert QNetworkAccessManager bei jeder HTTP-Antwort, die einen HSTS-Header enthält und über einen sicheren Transport empfangen wird, seinen HSTS-Cache und merkt sich entweder einen Host mit einer gültigen Richtlinie oder entfernt einen Host mit einer abgelaufenen oder deaktivierten HSTS-Richtlinie.
Siehe auch isStrictTransportSecurityEnabled().
void QNetworkAccessManager::setTransferTimeout(int timeout)
Setzt timeout als Übertragungszeitlimit in Millisekunden.
Siehe auch setTransferTimeout(std::chrono::milliseconds), transferTimeout(), und transferTimeoutAsDuration().
[since 6.7]
void QNetworkAccessManager::setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)
Legt den Timeout duration fest, um die Übertragung abzubrechen, wenn keine Daten ausgetauscht werden.
Übertragungen werden abgebrochen, wenn vor Ablauf der Zeitüberschreitung keine Bytes übertragen werden. Null bedeutet, dass kein Timer gesetzt wird. Wenn kein Argument angegeben wird, lautet die Zeitüberschreitung QNetworkRequest::DefaultTransferTimeout. Wird diese Funktion nicht aufgerufen, ist die Zeitüberschreitung deaktiviert und hat den Wert Null. Die anforderungsspezifischen Zeitüberschreitungen, die für die ausgeführten Anforderungen festgelegt wurden, überschreiben diesen Wert. Das bedeutet, dass wenn QNetworkAccessManager eine aktivierte Zeitüberschreitung hat, diese deaktiviert werden muss, um eine Anfrage ohne Zeitüberschreitung auszuführen.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch transferTimeoutAsDuration().
[signal]
void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)
Dieses Signal wird ausgegeben, wenn bei der Einrichtung der SSL/TLS-Sitzung Fehler aufgetreten sind, einschließlich Zertifikatsüberprüfungsfehler. Der Parameter errors enthält die Liste der Fehler, und reply ist der QNetworkReply, bei dem diese Fehler aufgetreten sind.
Um anzuzeigen, dass die Fehler nicht schwerwiegend sind und die Verbindung fortgesetzt werden soll, muss die Funktion QNetworkReply::ignoreSslErrors() von dem mit diesem Signal verbundenen Slot aufgerufen werden. Wird sie nicht aufgerufen, wird die SSL-Sitzung abgebaut, bevor irgendwelche Daten ausgetauscht werden (einschließlich der URL).
Dieses Signal kann verwendet werden, um dem Benutzer eine Fehlermeldung anzuzeigen, die darauf hinweist, dass die Sicherheit möglicherweise gefährdet ist, und um die SSL-Einstellungen anzuzeigen (siehe sslConfiguration(), um sie zu erhalten). Wenn der Benutzer nach der Analyse des entfernten Zertifikats fortfährt, sollte der Slot ignoreSslErrors() aufrufen.
Siehe auch QSslSocket::sslErrors(), QNetworkReply::sslErrors(), QNetworkReply::sslConfiguration(), und QNetworkReply::ignoreSslErrors().
QList<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const
Gibt die Liste der HTTP-Strict-Transport-Security-Richtlinien zurück. Diese Liste kann sich von derjenigen unterscheiden, die ursprünglich über addStrictTransportSecurityHosts() gesetzt wurde, wenn der HSTS-Cache anhand eines "Strict-Transport-Security"-Antwort-Headers aktualisiert wurde.
Siehe auch addStrictTransportSecurityHosts() und QHstsPolicy.
[virtual]
QStringList QNetworkAccessManager::supportedSchemes() const
Listet alle von der Zugriffsverwaltung unterstützten URL-Schemata auf.
Reimplementieren Sie diese Methode, um Ihre eigenen unterstützten Schemata in einer QNetworkAccessManager Unterklasse bereitzustellen. Dies ist zum Beispiel notwendig, wenn Ihre Unterklasse Unterstützung für neue Protokolle bietet.
int QNetworkAccessManager::transferTimeout() const
Gibt die für Übertragungen verwendete Zeitüberschreitung in Millisekunden zurück.
Siehe auch setTransferTimeout().
[since 6.7]
std::chrono::milliseconds QNetworkAccessManager::transferTimeoutAsDuration() const
Gibt die Timeout-Dauer zurück, nach der die Übertragung abgebrochen wird, wenn keine Daten ausgetauscht werden.
Die Standarddauer ist Null, was bedeutet, dass die Zeitüberschreitung nicht genutzt wird.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch setTransferTimeout(std::chrono::milliseconds).
© 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.