Auf dieser Seite

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

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.

KonstanteWertBeschreibung
QNetworkReply::NoError0Kein 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::ConnectionRefusedError1Der Remote-Server hat die Verbindung abgelehnt (der Server akzeptiert keine Anfragen).
QNetworkReply::RemoteHostClosedError2Der Remote-Server hat die Verbindung vorzeitig geschlossen, bevor die gesamte Antwort empfangen und verarbeitet wurde
QNetworkReply::HostNotFoundError3Der Name des Remote-Hosts wurde nicht gefunden (ungültiger Hostname)
QNetworkReply::TimeoutError4Die Verbindung zum Remote-Server ist abgelaufen
QNetworkReply::OperationCanceledError5Der Vorgang wurde vor seinem Abschluss durch Aufrufe von ` abort()` oder ` close()` abgebrochen.
QNetworkReply::SslHandshakeFailedError6Der SSL/TLS-Handshake ist fehlgeschlagen und der verschlüsselte Kanal konnte nicht aufgebaut werden. Das Signal ` sslErrors()` hätte ausgegeben werden müssen.
QNetworkReply::TemporaryNetworkFailureError7Die 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::NetworkSessionFailedError8Die Verbindung wurde aufgrund einer Unterbrechung der Netzwerkverbindung oder eines Fehlers beim Starten des Netzwerks unterbrochen.
QNetworkReply::BackgroundRequestNotAllowedError9Die Hintergrundanfrage ist aufgrund von Plattformrichtlinien derzeit nicht zulässig.
QNetworkReply::TooManyRedirectsError10Beim 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::InsecureRedirectError11Beim 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::ProxyConnectionRefusedError101Die Verbindung zum Proxy-Server wurde abgelehnt (der Proxy-Server akzeptiert keine Anfragen).
QNetworkReply::ProxyConnectionClosedError102Der Proxy-Server hat die Verbindung vorzeitig geschlossen, bevor die gesamte Antwort empfangen und verarbeitet wurde
QNetworkReply::ProxyNotFoundError103Der Proxy-Hostname wurde nicht gefunden (ungültiger Proxy-Hostname)
QNetworkReply::ProxyTimeoutError104Die Verbindung zum Proxy ist abgelaufen oder der Proxy hat nicht rechtzeitig auf die gesendete Anfrage geantwortet
QNetworkReply::ProxyAuthenticationRequiredError105Der Proxy erfordert eine Authentifizierung, um die Anfrage zu bearbeiten, hat jedoch keine der angebotenen Anmeldedaten (sofern vorhanden) akzeptiert
QNetworkReply::ContentAccessDenied201Der Zugriff auf den Remote-Inhalt wurde verweigert (ähnlich wie bei einem HTTP-Fehler 403)
QNetworkReply::ContentOperationNotPermittedError202Die für den Remote-Inhalt angeforderte Operation ist nicht zulässig
QNetworkReply::ContentNotFoundError203Der Remote-Inhalt wurde auf dem Server nicht gefunden (ähnlich wie bei einem HTTP-Fehler 404)
QNetworkReply::AuthenticationRequiredError204Der Remote-Server erfordert eine Authentifizierung, um den Inhalt bereitzustellen, aber die angegebenen Anmeldedaten wurden nicht akzeptiert (falls vorhanden).
QNetworkReply::ContentReSendError205Die Anfrage musste erneut gesendet werden, was jedoch fehlschlug, beispielsweise weil die Upload-Daten ein zweites Mal nicht gelesen werden konnten.
QNetworkReply::ContentConflictError206Die Anfrage konnte aufgrund eines Konflikts mit dem aktuellen Zustand der Ressource nicht abgeschlossen werden.
QNetworkReply::ContentGoneError207Die angeforderte Ressource ist auf dem Server nicht mehr verfügbar.
QNetworkReply::InternalServerError401Auf dem Server ist ein unerwarteter Fehler aufgetreten, der die Bearbeitung der Anfrage verhindert hat.
QNetworkReply::OperationNotImplementedError402Der Server unterstützt die zur Erfüllung der Anfrage erforderliche Funktionalität nicht.
QNetworkReply::ServiceUnavailableError403Der Server kann die Anfrage derzeit nicht bearbeiten.
QNetworkReply::ProtocolUnknownError301Die Netzwerkzugriffs-API kann die Anfrage nicht bearbeiten, da das Protokoll unbekannt ist.
QNetworkReply::ProtocolInvalidOperationError302Der angeforderte Vorgang ist für dieses Protokoll ungültig.
QNetworkReply::UnknownNetworkError99Es wurde ein unbekannter netzwerkbezogener Fehler festgestellt.
QNetworkReply::UnknownProxyError199Es wurde ein unbekannter, mit dem Proxy zusammenhängender Fehler festgestellt.
QNetworkReply::UnknownContentError299Es wurde ein unbekannter Fehler im Zusammenhang mit dem Remote-Inhalt festgestellt.
QNetworkReply::ProtocolFailure399Es wurde eine Protokollstörung festgestellt (Parsing-Fehler, ungültige oder unerwartete Antworten usw.)
QNetworkReply::UnknownServerError499Es 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().

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(); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „An überladene Slots anschließen“.

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.