QNetworkReply Class
Die Klasse „QNetworkReply“ enthält die Daten und Header für eine Anfrage, die mit „ QNetworkAccessManager “ gesendet wurde. Mehr...
| Header: | #include <QNetworkReply> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Erbt von: | QIODevice |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QNetworkReply ist Teil der Netzwerkprogrammier-API.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Typen
| enum | NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, …, UnknownServerError } |
| RawHeaderPair |
Öffentliche Funktionen
| virtual | ~QNetworkReply() |
| QVariant | attribute(QNetworkRequest::Attribute code) const |
| QNetworkReply::NetworkError | error() const |
| bool | hasRawHeader(QAnyStringView headerName) const |
| QVariant | header(QNetworkRequest::KnownHeaders header) const |
(since 6.8) QHttpHeaders | headers() const |
| void | ignoreSslErrors(const QList<QSslError> &errors) |
| bool | isFinished() const |
| bool | isRunning() const |
| QNetworkAccessManager * | manager() const |
| QNetworkAccessManager::Operation | operation() const |
| QByteArray | rawHeader(QAnyStringView headerName) const |
| QList<QByteArray> | rawHeaderList() const |
| const QList<QNetworkReply::RawHeaderPair> & | rawHeaderPairs() const |
| qint64 | readBufferSize() const |
| QNetworkRequest | request() const |
| virtual void | setReadBufferSize(qint64 size) |
| void | setSslConfiguration(const QSslConfiguration &config) |
| QSslConfiguration | sslConfiguration() const |
| QUrl | url() const |
Neu implementierte öffentliche Funktionen
| virtual void | close() override |
| virtual bool | isSequential() const override |
Öffentliche Slots
| virtual void | abort() = 0 |
| virtual void | ignoreSslErrors() |
Signale
| void | downloadProgress(qint64 bytesReceived, qint64 bytesTotal) |
| void | encrypted() |
| void | errorOccurred(QNetworkReply::NetworkError code) |
| void | finished() |
| void | metaDataChanged() |
| void | preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator) |
| void | redirectAllowed() |
| void | redirected(const QUrl &url) |
(since 6.3) void | requestSent() |
(since 6.3) void | socketStartedConnecting() |
| void | sslErrors(const QList<QSslError> &errors) |
| void | uploadProgress(qint64 bytesSent, qint64 bytesTotal) |
Geschützte Funktionen
| QNetworkReply(QObject *parent = nullptr) | |
| virtual void | ignoreSslErrorsImplementation(const QList<QSslError> &errors) |
| void | setAttribute(QNetworkRequest::Attribute code, const QVariant &value) |
| void | setError(QNetworkReply::NetworkError errorCode, const QString &errorString) |
| void | setFinished(bool finished) |
| void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) |
(since 6.8) void | setHeaders(const QHttpHeaders &newHeaders) |
(since 6.8) void | setHeaders(QHttpHeaders &&newHeaders) |
| void | setOperation(QNetworkAccessManager::Operation operation) |
| void | setRawHeader(const QByteArray &headerName, const QByteArray &value) |
| void | setRequest(const QNetworkRequest &request) |
| virtual void | setSslConfigurationImplementation(const QSslConfiguration &configuration) |
| void | setUrl(const QUrl &url) |
(since 6.8) void | setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value) |
| virtual void | sslConfigurationImplementation(QSslConfiguration &configuration) const |
Neu implementierte geschützte Funktionen
| virtual qint64 | writeData(const char *data, qint64 len) override |
Ausführliche Beschreibung
Die Klasse `QNetworkReply` enthält die Daten und Metadaten zu einer mit ` QNetworkAccessManager` gesendeten Anfrage. Wie ` QNetworkRequest` enthält sie eine URL und Header (sowohl in geparst als auch in Rohform), einige Informationen zum Status der Antwort sowie den Inhalt der Antwort selbst.
`QNetworkReply` ist ein ` QIODevice` mit sequenziellem Zugriff, was bedeutet, dass Daten, sobald sie aus dem Objekt gelesen wurden, vom Gerät nicht mehr aufbewahrt werden. Es liegt daher in der Verantwortung der Anwendung, diese Daten bei Bedarf zu speichern. Immer wenn weitere Daten aus dem Netzwerk empfangen und verarbeitet werden, wird das Signal ` readyRead()` ausgelöst.
Das Signal „ downloadProgress()“ wird ebenfalls ausgelöst, wenn Daten empfangen werden; die darin enthaltene Byteanzahl entspricht jedoch möglicherweise nicht den tatsächlich empfangenen Bytes, falls der Inhalt transformiert wurde (z. B. durch Dekomprimierung und Entfernung des Protokoll-Overheads).
Obwohl „QNetworkReply“ ein „ QIODevice “ ist, das mit dem Inhalt der Antwort verbunden ist, sendet es ebenfalls das Signal „ uploadProgress()“ aus, das den Fortschritt des Uploads für Operationen anzeigt, die einen solchen Inhalt haben.
Hinweis: LöschenSie das Objekt nicht in dem Slot, der mit dem Signal „ errorOccurred()“ oder „ finished()“ verbunden ist. Verwenden Sie stattdessen „ deleteLater()“.
Siehe auch „ QNetworkRequest “ und „ QNetworkAccessManager “.
Dokumentation zu Mitgliedstypen
enum QNetworkReply::NetworkError
Zeigt alle möglichen Fehlerzustände an, die bei der Verarbeitung der Anfrage festgestellt wurden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QNetworkReply::NoError | 0 | Kein Fehlerzustand. Hinweis: Wenn das HTTP-Protokoll eine Weiterleitung zurückgibt, wird kein Fehler gemeldet. Mit dem Attribut „ QNetworkRequest::RedirectionTargetAttribute “ können Sie überprüfen, ob eine Weiterleitung vorliegt. |
QNetworkReply::ConnectionRefusedError | 1 | Der Remote-Server hat die Verbindung abgelehnt (der Server akzeptiert keine Anfragen). |
QNetworkReply::RemoteHostClosedError | 2 | Der Remote-Server hat die Verbindung vorzeitig geschlossen, bevor die gesamte Antwort empfangen und verarbeitet wurde |
QNetworkReply::HostNotFoundError | 3 | Der Name des Remote-Hosts wurde nicht gefunden (ungültiger Hostname) |
QNetworkReply::TimeoutError | 4 | Die Verbindung zum Remote-Server ist abgelaufen |
QNetworkReply::OperationCanceledError | 5 | Der Vorgang wurde vor seinem Abschluss durch Aufrufe von ` abort()` oder ` close()` abgebrochen. |
QNetworkReply::SslHandshakeFailedError | 6 | Der SSL/TLS-Handshake ist fehlgeschlagen und der verschlüsselte Kanal konnte nicht aufgebaut werden. Das Signal ` sslErrors()` hätte ausgegeben werden müssen. |
QNetworkReply::TemporaryNetworkFailureError | 7 | Die Verbindung wurde aufgrund einer Unterbrechung der Netzwerkverbindung getrennt, das System hat jedoch das Roaming zu einem anderen Zugangspunkt initiiert. Die Anfrage sollte erneut gesendet werden und wird bearbeitet, sobald die Verbindung wiederhergestellt ist. |
QNetworkReply::NetworkSessionFailedError | 8 | Die Verbindung wurde aufgrund einer Unterbrechung der Netzwerkverbindung oder eines Fehlers beim Starten des Netzwerks unterbrochen. |
QNetworkReply::BackgroundRequestNotAllowedError | 9 | Die Hintergrundanfrage ist aufgrund von Plattformrichtlinien derzeit nicht zulässig. |
QNetworkReply::TooManyRedirectsError | 10 | Beim Verfolgen von Weiterleitungen wurde das maximale Limit erreicht. Das Limit ist standardmäßig auf 50 festgelegt oder wird durch `QNetworkRequest::setMaxRedirectsAllowed()` festgelegt. (Dieser Wert wurde in Version 5.6 eingeführt.) |
QNetworkReply::InsecureRedirectError | 11 | Beim Verfolgen von Weiterleitungen hat die Netzwerkzugriffs-API eine Weiterleitung von einem verschlüsselten Protokoll (https) zu einem unverschlüsselten (http) erkannt. (Dieser Wert wurde in Version 5.6 eingeführt.) |
QNetworkReply::ProxyConnectionRefusedError | 101 | Die Verbindung zum Proxy-Server wurde abgelehnt (der Proxy-Server akzeptiert keine Anfragen). |
QNetworkReply::ProxyConnectionClosedError | 102 | Der Proxy-Server hat die Verbindung vorzeitig geschlossen, bevor die gesamte Antwort empfangen und verarbeitet wurde |
QNetworkReply::ProxyNotFoundError | 103 | Der Proxy-Hostname wurde nicht gefunden (ungültiger Proxy-Hostname) |
QNetworkReply::ProxyTimeoutError | 104 | Die Verbindung zum Proxy ist abgelaufen oder der Proxy hat nicht rechtzeitig auf die gesendete Anfrage geantwortet |
QNetworkReply::ProxyAuthenticationRequiredError | 105 | Der Proxy erfordert eine Authentifizierung, um die Anfrage zu bearbeiten, hat jedoch keine der angebotenen Anmeldedaten (sofern vorhanden) akzeptiert |
QNetworkReply::ContentAccessDenied | 201 | Der Zugriff auf den Remote-Inhalt wurde verweigert (ähnlich wie bei einem HTTP-Fehler 403) |
QNetworkReply::ContentOperationNotPermittedError | 202 | Die für den Remote-Inhalt angeforderte Operation ist nicht zulässig |
QNetworkReply::ContentNotFoundError | 203 | Der Remote-Inhalt wurde auf dem Server nicht gefunden (ähnlich wie bei einem HTTP-Fehler 404) |
QNetworkReply::AuthenticationRequiredError | 204 | Der Remote-Server erfordert eine Authentifizierung, um den Inhalt bereitzustellen, aber die angegebenen Anmeldedaten wurden nicht akzeptiert (falls vorhanden). |
QNetworkReply::ContentReSendError | 205 | Die Anfrage musste erneut gesendet werden, was jedoch fehlschlug, beispielsweise weil die Upload-Daten ein zweites Mal nicht gelesen werden konnten. |
QNetworkReply::ContentConflictError | 206 | Die Anfrage konnte aufgrund eines Konflikts mit dem aktuellen Zustand der Ressource nicht abgeschlossen werden. |
QNetworkReply::ContentGoneError | 207 | Die angeforderte Ressource ist auf dem Server nicht mehr verfügbar. |
QNetworkReply::InternalServerError | 401 | Auf dem Server ist ein unerwarteter Fehler aufgetreten, der die Bearbeitung der Anfrage verhindert hat. |
QNetworkReply::OperationNotImplementedError | 402 | Der Server unterstützt die zur Erfüllung der Anfrage erforderliche Funktionalität nicht. |
QNetworkReply::ServiceUnavailableError | 403 | Der Server kann die Anfrage derzeit nicht bearbeiten. |
QNetworkReply::ProtocolUnknownError | 301 | Die Netzwerkzugriffs-API kann die Anfrage nicht bearbeiten, da das Protokoll unbekannt ist. |
QNetworkReply::ProtocolInvalidOperationError | 302 | Der angeforderte Vorgang ist für dieses Protokoll ungültig. |
QNetworkReply::UnknownNetworkError | 99 | Es wurde ein unbekannter netzwerkbezogener Fehler festgestellt. |
QNetworkReply::UnknownProxyError | 199 | Es wurde ein unbekannter, mit dem Proxy zusammenhängender Fehler festgestellt. |
QNetworkReply::UnknownContentError | 299 | Es wurde ein unbekannter Fehler im Zusammenhang mit dem Remote-Inhalt festgestellt. |
QNetworkReply::ProtocolFailure | 399 | Es wurde eine Protokollstörung festgestellt (Parsing-Fehler, ungültige oder unerwartete Antworten usw.) |
QNetworkReply::UnknownServerError | 499 | Es wurde ein unbekannter Fehler im Zusammenhang mit der Serverantwort festgestellt |
Siehe auch error() und errorOccurred().
QNetworkReply::RawHeaderPair
RawHeaderPair ist ein std::pair<QByteArray, QByteArray>, wobei das erste Element QByteArray der Name des Headers und das zweite Element der Header selbst ist.
Dokumentation der Mitgliedsfunktionen
[explicit protected] QNetworkReply::QNetworkReply(QObject *parent = nullptr)
Erstellt ein QNetworkReply-Objekt mit dem übergeordneten parent.
QNetworkReply-Objekte können nicht direkt instanziiert werden. Verwenden Sie dazu die Funktionen von „ QNetworkAccessManager “.
[virtual noexcept] QNetworkReply::~QNetworkReply()
Löscht diese Antwort und gibt alle damit verbundenen Ressourcen frei. Sollten noch Netzwerkverbindungen offen sein, werden diese geschlossen.
Siehe auch abort() und close().
[pure virtual slot] void QNetworkReply::abort()
Bricht den Vorgang sofort ab und schließt alle noch offenen Netzwerkverbindungen. Auch noch laufende Uploads werden abgebrochen.
Außerdem wird das Signal „ finished()“ ausgelöst.
Siehe auch „ close()“ und „ finished()“.
QVariant QNetworkReply::attribute(QNetworkRequest::Attribute code) const
Gibt das Attribut zurück, das dem Code „ code “ zugeordnet ist. Wenn das Attribut nicht festgelegt wurde, wird ein ungültiger Wert „ QVariant “ (Typ „ QMetaType::UnknownType “) zurückgegeben.
Sie können davon ausgehen, dass die in QNetworkRequest::Attribute aufgeführten Standardwerte auf die von dieser Funktion zurückgegebenen Werte angewendet werden.
Siehe auch setAttribute() und QNetworkRequest::Attribute.
[override virtual] void QNetworkReply::close()
Implementiert: QIODevice::close().
Schließt dieses Gerät für den Lesezugriff. Ungelesene Daten werden verworfen, die Netzwerkressourcen werden jedoch erst freigegeben, wenn alle Vorgänge abgeschlossen sind. Insbesondere wird ein eventuell laufender Upload fortgesetzt, bis er beendet ist.
Das Signal „ finished()“ wird ausgelöst, wenn alle Vorgänge abgeschlossen sind und die Netzwerkressourcen freigegeben wurden.
Siehe auch „ abort()“ und „ finished()“.
[signal] void QNetworkReply::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
Dieses Signal wird ausgegeben, um den Fortschritt des Download-Teils dieser Netzwerkanfrage anzuzeigen, sofern ein solcher vorhanden ist. Ist mit dieser Anfrage kein Download verbunden, wird dieses Signal einmal mit dem Wert 0 sowohl für „ bytesReceived “ als auch für „ bytesTotal “ ausgegeben.
Der Parameter „ bytesReceived “ gibt die Anzahl der empfangenen Bytes an, während „ bytesTotal “ die Gesamtzahl der Bytes angibt, die voraussichtlich heruntergeladen werden. Ist die Anzahl der herunterzuladenden Bytes nicht bekannt, ist „ bytesTotal “ gleich -1.
Der Download ist beendet, wenn „ bytesReceived “ gleich „ bytesTotal “ ist. Zu diesem Zeitpunkt ist „ bytesTotal “ nicht mehr -1.
Beachten Sie, dass die Werte von bytesReceived und bytesTotal von size() abweichen können, ebenso wie von der Gesamtanzahl der Bytes, die über read() oder readAll() ermittelt wurde, oder vom Wert des Headers (ContentLengthHeader). Der Grund dafür ist, dass es zu Protokoll-Overhead kommen kann oder die Daten während des Downloads komprimiert werden.
Siehe auch uploadProgress() und bytesAvailable().
[signal] void QNetworkReply::encrypted()
Dieses Signal wird ausgegeben, wenn eine SSL/TLS-Sitzung den anfänglichen Handshake erfolgreich abgeschlossen hat. Zu diesem Zeitpunkt wurden noch keine Benutzerdaten übertragen. Das Signal kann verwendet werden, um zusätzliche Prüfungen der Zertifikatskette durchzuführen, beispielsweise um Benutzer zu benachrichtigen, wenn sich das Zertifikat einer Website geändert hat. Entspricht die Antwort nicht den erwarteten Kriterien, sollte sie durch den Aufruf von ` QNetworkReply::abort()` durch einen mit diesem Signal verbundenen Slot abgebrochen werden. Die verwendete SSL-Konfiguration kann mit der Methode ` QNetworkReply::sslConfiguration()` überprüft werden.
Intern kann ` QNetworkAccessManager ` mehrere Verbindungen zu einem Server öffnen, um Anfragen parallel verarbeiten zu können. Diese Verbindungen können wiederverwendet werden, was bedeutet, dass das Signal `encrypted()` nicht ausgelöst wird. Das bedeutet, dass Sie dieses Signal garantiert nur für die erste Verbindung zu einer Website während der Lebensdauer von ` QNetworkAccessManager` erhalten.
Siehe auch ` QSslSocket::encrypted()` und ` QNetworkAccessManager::encrypted()`.
QNetworkReply::NetworkError QNetworkReply::error() const
Gibt den Fehler zurück, der bei der Verarbeitung dieser Anfrage festgestellt wurde. Wurde kein Fehler festgestellt, wird „ NoError “ zurückgegeben.
Siehe auch setError().
[signal] void QNetworkReply::errorOccurred(QNetworkReply::NetworkError code)
Dieses Signal wird ausgegeben, wenn die Antwort einen Fehler bei der Verarbeitung feststellt. Es folgt wahrscheinlich das Signal „ finished()“, das anzeigt, dass die Verbindung beendet ist.
Der Parameter „ code “ enthält den Code des erkannten Fehlers. Rufen Sie „ errorString()“ auf, um eine textuelle Darstellung des Fehlerzustands zu erhalten.
Hinweis: LöschenSie das Objekt im mit diesem Signal verbundenen Slot nicht. Verwenden Sie stattdessen „ deleteLater()“.
Siehe auch „ error()“ und „ errorString()“.
[signal] void QNetworkReply::finished()
Dieses Signal wird ausgelöst, wenn die Verarbeitung der Antwort abgeschlossen ist. Nach dem Auslösen dieses Signals erfolgen keine weiteren Aktualisierungen der Daten oder Metadaten der Antwort.
Sofern nicht „ close()“ oder „ abort()“ aufgerufen wurden, bleibt die Antwort zum Lesen geöffnet, sodass die Daten durch Aufrufe von „ read()“ oder „ readAll()“ abgerufen werden können. Insbesondere wenn infolge von „ readyRead()“ kein Aufruf von „ read()“ erfolgte, wird durch einen Aufruf von „ readAll()“ der vollständige Inhalt in einem „ QByteArray “ abgerufen.
Dieses Signal wird zusammen mit „ QNetworkAccessManager::finished()“ ausgelöst, wobei der Antwortparameter dieses Signals dieses Objekt ist.
Hinweis: LöschenSie das Objekt nicht in dem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen „ deleteLater()“.
Sie können „ isFinished()“ auch verwenden, um zu prüfen, ob ein „ QNetworkReply “ bereits abgeschlossen ist, noch bevor Sie das Signal „finished()“ erhalten.
Siehe auch „ setFinished()“, „ QNetworkAccessManager::finished()“ und „ isFinished()“.
bool QNetworkReply::hasRawHeader(QAnyStringView headerName) const
Gibt „ true “ zurück, wenn der Roh-Header mit dem Namen „ headerName “ vom Remote-Server gesendet wurde.
Hinweis: In Qt-Versionen vor 6.7 akzeptierte diese Funktion ausschließlich „ QByteArray “ als Argument.
Siehe auch rawHeader().
QVariant QNetworkReply::header(QNetworkRequest::KnownHeaders header) const
Gibt den Wert des bekannten Headers „ header “ zurück, sofern dieser Header vom Remote-Server gesendet wurde. Wurde der Header nicht gesendet, wird ein ungültiger Wert „ QVariant “ zurückgegeben.
Siehe auch rawHeader(), setHeader() und QNetworkRequest::header().
[since 6.8] QHttpHeaders QNetworkReply::headers() const
Gibt die vom Remote-Server gesendeten Header zurück.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch setHeaders(), QNetworkRequest::setAttribute() und QNetworkRequest::Attribute.
[virtual slot] void QNetworkReply::ignoreSslErrors()
Wird diese Funktion aufgerufen, werden SSL-Fehler im Zusammenhang mit der Netzwerkverbindung ignoriert, einschließlich Fehlern bei der Zertifikatsvalidierung.
Warnung: Stellen Sie sicher, dass der Benutzer stets die vom Signal „ sslErrors()“ gemeldeten Fehler überprüfen kann, und rufen Sie diese Methode erst auf, nachdem der Benutzer bestätigt hat, dass die Fortsetzung in Ordnung ist. Sollten unerwartete Fehler auftreten, sollte die Antwort abgebrochen werden. Der Aufruf dieser Methode ohne Überprüfung der tatsächlichen Fehler stellt höchstwahrscheinlich ein Sicherheitsrisiko für Ihre Anwendung dar. Verwenden Sie sie mit großer Vorsicht!
Diese Funktion kann aus dem Slot aufgerufen werden, der mit dem Signal ` sslErrors()` verbunden ist, das angibt, welche Fehler gefunden wurden.
Hinweis: Wenn „HTTP Strict Transport Security“ für „ QNetworkAccessManager “ aktiviert ist, hat diese Funktion keine Wirkung.
Hinweis: Dieser Slot ist überladen. So verbinden Sie sich mit diesem Slot:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
networkReply, qOverload<>(&QNetworkReply::ignoreSslErrors));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
networkReply, [receiver = networkReply]() { receiver->ignoreSslErrors(); });Siehe auch „ sslConfiguration()“, „ sslErrors()“ und „ QSslSocket::ignoreSslErrors()“.
void QNetworkReply::ignoreSslErrors(const QList<QSslError> &errors)
Wird diese Funktion aufgerufen, werden die unter errors aufgeführten SSL-Fehler ignoriert.
Hinweis: Da die meisten SSL-Fehler mit einem Zertifikat zusammenhängen, müssen Sie für die meisten von ihnen das erwartete Zertifikat angeben, auf das sich dieser SSL-Fehler bezieht. Wenn Sie beispielsweise eine Anfrage an einen Server senden möchten, der ein selbstsigniertes Zertifikat verwendet, beachten Sie den folgenden Codeausschnitt:
QList<QSslCertificate> cert = QSslCertificate::fromPath("server-certificate.pem"_L1);
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://server.tld/index.html")));
reply->ignoreSslErrors(expectedSslErrors);
// here connect signals etc.Mehrere Aufrufe dieser Funktion ersetzen die Liste der Fehler, die bei früheren Aufrufen übergeben wurden. Sie können die Liste der zu ignorierenden Fehler löschen, indem Sie diese Funktion mit einer leeren Liste aufrufen.
Hinweis: Wenn „HTTP Strict Transport Security“ für QNetworkAccessManager aktiviert ist, hat diese Funktion keine Wirkung.
Dies ist eine überladene Funktion.
Siehe auch sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors() und QNetworkAccessManager::setStrictTransportSecurityEnabled().
[virtual protected] void QNetworkReply::ignoreSslErrorsImplementation(const QList<QSslError> &errors)
Diese virtuelle Methode dient dazu, das Verhalten von ` ignoreSslErrors()` zu überschreiben. ` ignoreSslErrors()` ist ein öffentlicher Wrapper für diese Methode. ` errors ` enthält die Fehler, die der Benutzer ignorieren möchte.
Siehe auch ` ignoreSslErrors()`.
bool QNetworkReply::isFinished() const
Gibt „ true “ zurück, wenn die Antwort abgeschlossen ist oder abgebrochen wurde.
Siehe auch isRunning().
bool QNetworkReply::isRunning() const
Gibt „ true “ zurück, wenn die Anfrage noch bearbeitet wird und die Antwort weder abgeschlossen noch abgebrochen wurde.
Siehe auch isFinished().
[override virtual] bool QNetworkReply::isSequential() const
Implementiert: ` QIODevice::isSequential()` const.
QNetworkAccessManager *QNetworkReply::manager() const
Gibt das „ QNetworkAccessManager “ zurück, das zum Erstellen dieses „ QNetworkReply “-Objekts verwendet wurde. Zu Beginn ist es auch das übergeordnete Objekt.
[signal] void QNetworkReply::metaDataChanged()
Dieses Signal wird immer dann ausgesendet, wenn sich die Metadaten in dieser Antwort ändern. Metadaten sind alle Informationen, die nicht zum eigentlichen Inhalt (den Daten) gehören, einschließlich der Netzwerk-Header. In den meisten Fällen sind die Metadaten bereits vollständig bekannt, wenn das erste Datenbyte empfangen wird. Es ist jedoch möglich, dass während der Verarbeitung der Daten Aktualisierungen von Headern oder anderen Metadaten empfangen werden.
Siehe auch header(), rawHeaderList(), rawHeader() und hasRawHeader().
QNetworkAccessManager::Operation QNetworkReply::operation() const
Gibt die Operation zurück, die für diese Antwort verbucht wurde.
Siehe auch „ setOperation()“.
[signal] void QNetworkReply::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
Dieses Signal wird ausgegeben, wenn beim SSL/TLS-Handshake eine PSK-Verschlüsselungssuite ausgehandelt wird und daher anschließend eine PSK-Authentifizierung erforderlich ist.
Bei Verwendung von PSK muss der Client dem Server eine gültige Identität und einen gültigen vorab geteilten Schlüssel 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 Anforderungen ausfüllen.
Hinweis: Wird dieses Signalignoriert oder werden die erforderlichen Anmeldedaten nicht bereitgestellt, schlägt der Handshake fehl und die Verbindung wird abgebrochen.
Hinweis: Das ` authenticator `-Objekt gehört zur Antwort und darf von der Anwendung nicht gelöscht werden.
Siehe auch QSslPreSharedKeyAuthenticator.
QByteArray QNetworkReply::rawHeader(QAnyStringView headerName) const
Gibt den Rohinhalt des Header-Feldes „ headerName “ zurück, wie er vom Remote-Server gesendet wurde. Wenn kein solches Header-Feld vorhanden ist, wird ein leeres Byte-Array zurückgegeben, das möglicherweise nicht von einem leeren Header zu unterscheiden ist. Verwenden Sie „ hasRawHeader()“, um zu überprüfen, ob der Server ein solches Header-Feld gesendet hat.
Hinweis: In Qt-Versionen vor 6.7 akzeptierte diese Funktion ausschließlich ` QByteArray `.
Siehe auch ` setRawHeader()`, ` hasRawHeader()` und ` header()`.
QList<QByteArray> QNetworkReply::rawHeaderList() const
Gibt eine Liste der vom Remote-Server gesendeten Header-Felder in der Reihenfolge ihrer Übermittlung zurück. Doppelte Header werden übersprungen.
const QList<QNetworkReply::RawHeaderPair> &QNetworkReply::rawHeaderPairs() const
Gibt eine Liste von Roh-Header-Paaren zurück.
qint64 QNetworkReply::readBufferSize() const
Gibt die Größe des Lesepuffers in Byte zurück.
Siehe auch „ setReadBufferSize()“.
[signal] void QNetworkReply::redirectAllowed()
Wenn der Client-Code, der das Signal „ redirected()“ verarbeitet, die neue URL überprüft hat, sendet er dieses Signal aus, damit die Weiterleitung erfolgen kann. Dieses Protokoll gilt für Netzwerkanfragen, deren Weiterleitungsrichtlinie auf QNetworkRequest::UserVerifiedRedirectPolicy
Siehe auch „ QNetworkRequest::UserVerifiedRedirectPolicy“ , „ QNetworkAccessManager::setRedirectPolicy()“ und „ QNetworkRequest::RedirectPolicyAttribute “.
[signal] void QNetworkReply::redirected(const QUrl &url)
Dieses Signal wird ausgegeben, wenn der Parameter „ QNetworkRequest::ManualRedirectPolicy “ in der Anfrage nicht gesetzt war und der Server mit einem 3xx-Status (insbesondere den Statuscodes 301, 302, 303, 305, 307 oder 308) geantwortet hat, wobei der „Location“-Header eine gültige URL enthält, die auf eine HTTP-Weiterleitung hinweist. Der Parameter „ url “ enthält die neue Weiterleitungs-URL, wie sie vom Server im „Location“-Header zurückgegeben wurde.
Siehe auch QNetworkRequest::RedirectPolicy.
QNetworkRequest QNetworkReply::request() const
Gibt die Anfrage zurück, die für diese Antwort gesendet wurde. Beachten Sie insbesondere, dass sich die URL der Anfrage von der der Antwort unterscheiden kann.
Siehe auch QNetworkRequest::url(), url() und setRequest().
[signal, since 6.3] void QNetworkReply::requestSent()
Dieses Signal wird ein- oder mehrmals ausgelöst, wenn die Anfrage gesendet wurde. Nützlich für benutzerdefinierte Fortschrittsanzeigen oder die Zeitüberschreitungsbehandlung.
Diese Funktion wurde in Qt 6.3 eingeführt.
Siehe auch „ metaDataChanged()“ und „ socketStartedConnecting()“.
[protected] void QNetworkReply::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)
Setzt das Attribut „ code “ auf den Wert „ value “. Falls zuvor „ code “ gesetzt war, wird dieser Wert überschrieben. Falls „ value “ ein ungültiges „ QVariant “ ist, wird das Attribut zurückgesetzt.
Siehe auch attribute() und QNetworkRequest::setAttribute().
[protected] void QNetworkReply::setError(QNetworkReply::NetworkError errorCode, const QString &errorString)
Setzt die Fehlerbedingung auf „ errorCode “. Die für Menschen lesbare Meldung wird mit „ errorString “ festgelegt.
Der Aufruf von `setError()` löst das Signal ` errorOccurred` (QNetworkReply::NetworkError) nicht aus.
Siehe auch „ error()“ und „ errorString()“.
[protected] void QNetworkReply::setFinished(bool finished)
Legt die Antwort als „ finished “ fest.
Nachdem dies festgelegt wurde, dürfen sich die Daten der Antwort nicht mehr ändern.
Siehe auch finished() und isFinished().
[protected] void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Setzt den bekannten Header „ header “ auf den Wert „ value “. Die entsprechende Rohform des Headers wird ebenfalls gesetzt.
Siehe auch header(), setRawHeader() und QNetworkRequest::setHeader().
[protected, since 6.8] void QNetworkReply::setHeaders(const QHttpHeaders &newHeaders)
Legt „ newHeaders “ als Header in dieser Netzwerkantwort fest und überschreibt dabei alle zuvor festgelegten Header.
Wenn einige Header mit den bekannten Headern übereinstimmen, werden sie geparst und die entsprechende geparste Form ebenfalls gesetzt.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch „ headers()“ und „ QNetworkRequest::KnownHeaders “.
[protected, since 6.8] void QNetworkReply::setHeaders(QHttpHeaders &&newHeaders)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.8 eingeführt.
[protected] void QNetworkReply::setOperation(QNetworkAccessManager::Operation operation)
Legt die zugehörige Operation für dieses Objekt auf „ operation “ fest. Dieser Wert wird von der Funktion „ operation()“ zurückgegeben.
Hinweis: Die Operation sollte bei der Erstellung dieses Objekts festgelegt und danach nicht mehr geändert werden.
Siehe auch „ operation()“ und „ setRequest()“.
[protected] void QNetworkReply::setRawHeader(const QByteArray &headerName, const QByteArray &value)
Setzt den Raw-Header „ headerName “ auf den Wert „ value “. Falls „ headerName “ zuvor gesetzt wurde, wird dieser Wert überschrieben. Mehrere HTTP-Header mit demselben Namen entsprechen funktional einem einzigen Header, dessen Werte durch Kommas getrennt aneinandergereiht sind.
Wenn „ headerName “ mit einem bekannten Header übereinstimmt, wird der Wert „ value “ geparst und die entsprechende geparste Form ebenfalls gesetzt.
Siehe auch rawHeader(), header(), setHeader() und QNetworkRequest::setRawHeader().
[virtual] void QNetworkReply::setReadBufferSize(qint64 size)
Legt die Größe des Lesepuffers auf size Bytes fest. Der Lesepuffer ist der Puffer, in dem Daten gespeichert werden, die aus dem Netzwerk heruntergeladen werden, bevor sie mit QIODevice::read() gelesen werden. Wird die Puffergröße auf 0 gesetzt, ist die Größe des Puffers unbegrenzt.
QNetworkReply versucht, das Lesen aus dem Netzwerk zu beenden, sobald dieser Puffer voll ist (d. h., „ bytesAvailable()“ gibt „ size “ oder mehr zurück), wodurch auch die Download-Geschwindigkeit gedrosselt wird. Ist die Puffergröße nicht begrenzt, versucht „ QNetworkReply “, so schnell wie möglich aus dem Netzwerk herunterzuladen.
Im Gegensatz zu ` QAbstractSocket::setReadBufferSize()` kann ` QNetworkReply ` keine Genauigkeit bei der Größe des Lesepuffers garantieren. Das heißt, ` bytesAvailable()` kann mehr als ` size` zurückgeben.
Siehe auch readBufferSize().
[protected] void QNetworkReply::setRequest(const QNetworkRequest &request)
Legt fest, dass die zugehörige Anfrage für dieses Objekt „ request “ lautet. Dieser Wert wird von der Funktion „ request()“ zurückgegeben.
Hinweis: Die Anfrage sollte beim Erstellen dieses Objekts festgelegt und danach nicht mehr geändert werden.
Siehe auch request() und setOperation().
void QNetworkReply::setSslConfiguration(const QSslConfiguration &config)
Legt die SSL-Konfiguration für die mit dieser Anfrage verbundene Netzwerkverbindung, sofern möglich, so fest, dass sie der von config entspricht.
Siehe auch sslConfiguration().
[virtual protected] void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &configuration)
Diese virtuelle Methode dient dazu, das Verhalten von ` setSslConfiguration()` zu überschreiben. ` setSslConfiguration()` ist ein öffentlicher Wrapper für diese Methode. Wenn Sie diese Methode überschreiben, verwenden Sie ` configuration `, um die SSL-Konfiguration festzulegen.
Siehe auch „ sslConfigurationImplementation()“ und „ setSslConfiguration()“.
[protected] void QNetworkReply::setUrl(const QUrl &url)
Setzt die gerade verarbeitete URL auf url. Normalerweise stimmt die URL mit der der gesendeten Anfrage überein, kann jedoch aus verschiedenen Gründen abweichen (beispielsweise wenn ein Dateipfad absolut oder kanonisch angegeben wird).
Siehe auch url(), request() und QNetworkRequest::url().
[protected, since 6.8] void QNetworkReply::setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value)
Setzt den Header „ name “ auf den Wert „ value “. Falls „ name “ zuvor gesetzt war, wird dieser Wert überschrieben.
Diese Funktion wurde in Qt 6.8 eingeführt.
[signal, since 6.3] void QNetworkReply::socketStartedConnecting()
Dieses Signal wird 0 oder mehrmals ausgelöst, während der Socket eine Verbindung herstellt, bevor die Anfrage gesendet wird. Nützlich für benutzerdefinierte Fortschrittsanzeigen oder die Zeitüberschreitungsbehandlung.
Diese Funktion wurde in Qt 6.3 eingeführt.
Siehe auch „ metaDataChanged()“ und „ requestSent()“.
QSslConfiguration QNetworkReply::sslConfiguration() const
Gibt die SSL-Konfiguration und den Status zurück, die mit dieser Antwort verbunden sind, sofern SSL verwendet wurde. Sie enthält das Zertifikat des Remote-Servers, dessen Zertifikatskette bis zur Zertifizierungsstelle sowie die verwendeten Verschlüsselungsalgorithmen.
Das Zertifikat des Gegenübers und dessen Zertifikatskette sind zum Zeitpunkt der Ausgabe von ` sslErrors()` bekannt, sofern diese Funktion aufgerufen wird.
Siehe auch setSslConfiguration().
[virtual protected] void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &configuration) const
Diese virtuelle Methode dient dazu, das Verhalten von ` sslConfiguration()` zu überschreiben. ` sslConfiguration()` ist ein öffentlicher Wrapper für diese Methode. Die Konfiguration wird in ` configuration` zurückgegeben.
Siehe auch setSslConfigurationImplementation() und sslConfiguration().
[signal] void QNetworkReply::sslErrors(const QList<QSslError> &errors)
Dieses Signal wird ausgelöst, wenn beim Aufbau der SSL/TLS-Sitzung Fehler aufgetreten sind, darunter auch Fehler bei der Zertifikatsüberprüfung. Der Parameter „ errors “ enthält die Liste der Fehler.
Um anzuzeigen, dass die Fehler nicht schwerwiegend sind und die Verbindung fortgesetzt werden soll, sollte die Funktion ` ignoreSslErrors()` aus dem mit diesem Signal verbundenen Slot aufgerufen werden. Wird sie nicht aufgerufen, wird die SSL-Sitzung beendet, bevor Daten (einschließlich der URL) ausgetauscht werden.
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 diese abzurufen). Wenn der Benutzer nach der Analyse des Remote-Zertifikats beschließt, fortzufahren, sollte der Slot „ ignoreSslErrors()“ aufrufen.
Siehe auch QSslSocket::sslErrors(), QNetworkAccessManager::sslErrors(), sslConfiguration() und ignoreSslErrors().
[signal] void QNetworkReply::uploadProgress(qint64 bytesSent, qint64 bytesTotal)
Dieses Signal wird ausgegeben, um den Fortschritt des Upload-Teils dieser Netzwerkanfrage anzuzeigen, sofern ein solcher vorhanden ist. Ist mit dieser Anfrage kein Upload verbunden, wird dieses Signal nicht ausgegeben.
Der Parameter „ bytesSent “ gibt die Anzahl der hochgeladenen Bytes an, während „ bytesTotal “ die Gesamtzahl der hochzuladenden Bytes angibt. Wenn die Anzahl der hochzuladenden Bytes nicht ermittelt werden konnte, ist „ bytesTotal “ gleich -1.
Der Upload ist beendet, wenn „ bytesSent “ gleich „ bytesTotal “ ist. Zu diesem Zeitpunkt ist „ bytesTotal “ nicht mehr -1.
Siehe auch downloadProgress().
QUrl QNetworkReply::url() const
Gibt die URL des heruntergeladenen oder hochgeladenen Inhalts zurück. Beachten Sie, dass sich die URL von der der ursprünglichen Anfrage unterscheiden kann. Wenn in der Anfrage Weiterleitungen aktiviert waren, gibt diese Funktion die aktuelle URL zurück, auf die die Netzwerk-API zugreift, d. h. die URL der Ressource, zu der die Anfrage weitergeleitet wurde.
Siehe auch request(), setUrl(), QNetworkRequest::url() und redirected().
[override virtual protected] qint64 QNetworkReply::writeData(const char *data, qint64 len)
Implementiert: ` QIODevice::writeData` (const char *data, qint64 maxSize).
© 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.