QNetworkReply Class
La classe `QNetworkReply` contient les données et les en-têtes d'une requête envoyée à l'aide de ` QNetworkAccessManager`. En savoir plus...
| En-tête : | #include <QNetworkReply> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Hérite de : | QIODevice |
- Liste de tous les membres, y compris les membres hérités
- QNetworkReply fait partie de l'API de programmation réseau.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, …, UnknownServerError } |
| RawHeaderPair |
Fonctions publiques
| 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 |
Fonctions publiques réimplémentées
| virtual void | close() override |
| virtual bool | isSequential() const override |
Slots publics
| virtual void | abort() = 0 |
| virtual void | ignoreSslErrors() |
Signaux
| 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) |
Fonctions protégées
| 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 |
Fonctions protégées réimplémentées
| virtual qint64 | writeData(const char *data, qint64 len) override |
Description détaillée
La classe QNetworkReply contient les données et les métadonnées relatives à une requête envoyée via QNetworkAccessManager. À l'instar de QNetworkRequest, elle contient une URL et des en-têtes (sous forme analysée et brute), des informations sur l'état de la réponse ainsi que le contenu de la réponse elle-même.
QNetworkReply est un objet ` QIODevice` à accès séquentiel, ce qui signifie qu’une fois les données lues à partir de l’objet, elles ne sont plus conservées par l’appareil. Il incombe donc à l’application de conserver ces données si nécessaire. Chaque fois que de nouvelles données sont reçues du réseau et traitées, le signal ` readyRead()` est émis.
Le signal downloadProgress() est également émis lorsque des données sont reçues, mais le nombre d’octets qu’il contient peut ne pas correspondre au nombre réel d’octets reçus, si une transformation est effectuée sur le contenu (par exemple, décompression et suppression de la surcharge du protocole).
Même si QNetworkReply est un QIODevice lié au contenu de la réponse, il émet également le signal uploadProgress(), qui indique la progression du téléchargement pour les opérations comportant un tel contenu.
Remarque : ne supprimezpas l’objet dans le slot lié au signal ` errorOccurred()` ou ` finished()`. Utilisez plutôt ` deleteLater()`.
Voir également QNetworkRequest et QNetworkAccessManager.
Documentation sur les types de membres
enum QNetworkReply::NetworkError
Indique toutes les conditions d'erreur possibles détectées lors du traitement de la requête.
| Constante | Valeur | Description |
|---|---|---|
QNetworkReply::NoError | 0 | Aucune condition d'erreur. Remarque : lorsque le protocole HTTP renvoie une redirection, aucune erreur n'est signalée. Vous pouvez vérifier s'il y a une redirection à l'aide de l'attribut « QNetworkRequest::RedirectionTargetAttribute ». |
QNetworkReply::ConnectionRefusedError | 1 | le serveur distant a refusé la connexion (le serveur n'accepte pas les requêtes) |
QNetworkReply::RemoteHostClosedError | 2 | le serveur distant a fermé la connexion prématurément, avant que la réponse n'ait été entièrement reçue et traitée |
QNetworkReply::HostNotFoundError | 3 | le nom d’hôte distant est introuvable (nom d’hôte invalide) |
QNetworkReply::TimeoutError | 4 | le délai d'attente de la connexion au serveur distant a expiré |
QNetworkReply::OperationCanceledError | 5 | l'opération a été annulée via des appels à ` abort()` ou ` close()` avant qu'elle ne soit terminée. |
QNetworkReply::SslHandshakeFailedError | 6 | la négociation SSL/TLS a échoué et le canal chiffré n’a pas pu être établi. Le signal sslErrors() aurait dû être émis. |
QNetworkReply::TemporaryNetworkFailureError | 7 | la connexion a été interrompue en raison d’une déconnexion du réseau, mais le système a lancé une procédure de roaming vers un autre point d’accès. La requête doit être renvoyée et sera traitée dès que la connexion sera rétablie. |
QNetworkReply::NetworkSessionFailedError | 8 | La connexion a été interrompue en raison d’une déconnexion du réseau ou d’un échec au démarrage du réseau. |
QNetworkReply::BackgroundRequestNotAllowedError | 9 | La requête en arrière-plan n’est actuellement pas autorisée en raison de la politique de la plateforme. |
QNetworkReply::TooManyRedirectsError | 10 | Lors du suivi des redirections, la limite maximale a été atteinte. La limite est définie par défaut à 50 ou selon la valeur définie par QNetworkRequest::setMaxRedirectsAllowed(). (Cette valeur a été introduite dans la version 5.6.) |
QNetworkReply::InsecureRedirectError | 11 | lors du suivi des redirections, l’API d’accès au réseau a détecté une redirection d’un protocole chiffré (https) vers un protocole non chiffré (http). (Cette valeur a été introduite dans la version 5.6.) |
QNetworkReply::ProxyConnectionRefusedError | 101 | La connexion au serveur proxy a été refusée (le serveur proxy n'accepte pas les requêtes). |
QNetworkReply::ProxyConnectionClosedError | 102 | le serveur proxy a fermé la connexion prématurément, avant que la réponse n’ait été entièrement reçue et traitée |
QNetworkReply::ProxyNotFoundError | 103 | le nom d’hôte du proxy est introuvable (nom d’hôte de proxy invalide) |
QNetworkReply::ProxyTimeoutError | 104 | le délai d'attente de la connexion au proxy a expiré ou le proxy n'a pas répondu à temps à la requête envoyée |
QNetworkReply::ProxyAuthenticationRequiredError | 105 | le proxy exige une authentification pour traiter la requête, mais n’a accepté aucune des informations d’identification fournies (le cas échéant) |
QNetworkReply::ContentAccessDenied | 201 | l'accès au contenu distant a été refusé (similaire à l'erreur HTTP 403) |
QNetworkReply::ContentOperationNotPermittedError | 202 | l'opération demandée sur le contenu distant n'est pas autorisée |
QNetworkReply::ContentNotFoundError | 203 | le contenu distant n'a pas été trouvé sur le serveur (similaire à l'erreur HTTP 404) |
QNetworkReply::AuthenticationRequiredError | 204 | le serveur distant exige une authentification pour fournir le contenu, mais les identifiants fournis n'ont pas été acceptés (le cas échéant) |
QNetworkReply::ContentReSendError | 205 | la requête devait être renvoyée, mais cela a échoué, par exemple parce que les données de téléchargement n'ont pas pu être lues une deuxième fois. |
QNetworkReply::ContentConflictError | 206 | la requête n'a pas pu être menée à bien en raison d'un conflit avec l'état actuel de la ressource. |
QNetworkReply::ContentGoneError | 207 | La ressource demandée n'est plus disponible sur le serveur. |
QNetworkReply::InternalServerError | 401 | le serveur a rencontré une condition inattendue qui l'a empêché de répondre à la requête. |
QNetworkReply::OperationNotImplementedError | 402 | le serveur ne prend pas en charge la fonctionnalité requise pour répondre à la requête. |
QNetworkReply::ServiceUnavailableError | 403 | Le serveur n'est pas en mesure de traiter la requête pour le moment. |
QNetworkReply::ProtocolUnknownError | 301 | L'API d'accès au réseau ne peut pas honorer la requête car le protocole n'est pas reconnu |
QNetworkReply::ProtocolInvalidOperationError | 302 | L'opération demandée n'est pas valide pour ce protocole. |
QNetworkReply::UnknownNetworkError | 99 | Une erreur réseau inconnue a été détectée. |
QNetworkReply::UnknownProxyError | 199 | Une erreur inconnue liée au proxy a été détectée. |
QNetworkReply::UnknownContentError | 299 | Une erreur inconnue liée au contenu distant a été détectée. |
QNetworkReply::ProtocolFailure | 399 | une anomalie au niveau du protocole a été détectée (erreur d'analyse, réponses non valides ou inattendues, etc.) |
QNetworkReply::UnknownServerError | 499 | Une erreur inconnue liée à la réponse du serveur a été détectée |
Voir également error() et errorOccurred().
QNetworkReply::RawHeaderPair
RawHeaderPair est un std::pair<QByteArray, QByteArray>, où le premier élément QByteArray correspond au nom de l'en-tête et le second à l'en-tête lui-même.
Documentation des fonctions membres
[explicit protected] QNetworkReply::QNetworkReply(QObject *parent = nullptr)
Crée un objet `QNetworkReply` dont le parent est ` parent`.
Vous ne pouvez pas instancier directement des objets QNetworkReply. Utilisez les fonctions d’ QNetworkAccessManager pour ce faire.
[virtual noexcept] QNetworkReply::~QNetworkReply()
Supprime cette réponse et libère toutes les ressources qui y sont associées. Si des connexions réseau sont encore ouvertes, elles seront fermées.
Voir également abort() et close().
[pure virtual slot] void QNetworkReply::abort()
Interrompt immédiatement l'opération et ferme toutes les connexions réseau encore ouvertes. Les transferts en cours sont également interrompus.
Le signal finished() sera également émis.
Voir également close() et finished().
QVariant QNetworkReply::attribute(QNetworkRequest::Attribute code) const
Renvoie l'attribut associé au code code. Si l'attribut n'a pas été défini, la fonction renvoie une valeur non valide QVariant (de type QMetaType::UnknownType).
Vous pouvez vous attendre à ce que les valeurs par défaut répertoriées dans QNetworkRequest::Attribute soient appliquées aux valeurs renvoyées par cette fonction.
Voir également setAttribute() et QNetworkRequest::Attribute.
[override virtual] void QNetworkReply::close()
Réimplémente : QIODevice::close().
Ferme ce périphérique en lecture. Les données non lues sont ignorées, mais les ressources réseau ne sont pas libérées tant que toutes les opérations ne sont pas terminées. En particulier, si un transfert en cours de chargement est en cours, celui-ci se poursuivra jusqu’à son achèvement.
Le signal ` finished()` est émis lorsque toutes les opérations sont terminées et que les ressources réseau sont libérées.
Voir également abort() et finished().
[signal] void QNetworkReply::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
Ce signal est émis pour indiquer la progression de la partie « téléchargement » de cette requête réseau, le cas échéant. Si aucune opération de téléchargement n’est associée à cette requête, ce signal sera émis une seule fois avec la valeur 0 pour les paramètres bytesReceived et bytesTotal.
Le paramètre bytesReceived indique le nombre d’octets reçus, tandis que bytesTotal indique le nombre total d’octets devant être téléchargés. Si le nombre d’octets à télécharger n’est pas connu, bytesTotal prendra la valeur -1.
Le téléchargement est terminé lorsque bytesReceived est égal à bytesTotal. À ce moment-là, bytesTotal ne sera plus égal à -1.
Notez que les valeurs de bytesReceived et de bytesTotal peuvent différer de size(), du nombre total d’octets obtenu via read() ou readAll(), ou encore de la valeur de l’en-tête (ContentLengthHeader). Cela s’explique par la présence éventuelle d’une surcharge liée au protocole ou par la compression des données pendant le téléchargement.
Voir également uploadProgress() et bytesAvailable().
[signal] void QNetworkReply::encrypted()
Ce signal est émis lorsqu'une session SSL/TLS a mené à bien la phase initiale d'établissement de la connexion. À ce stade, aucune donnée utilisateur n'a encore été transmise. Ce signal peut être utilisé pour effectuer des vérifications supplémentaires sur la chaîne de certificats, par exemple pour avertir les utilisateurs lorsque le certificat d’un site web a changé. Si la réponse ne correspond pas aux critères attendus, elle doit être interrompue en appelant la méthode ` QNetworkReply::abort()` depuis un slot connecté à ce signal. La configuration SSL en cours d’utilisation peut être consultée à l’aide de la méthode ` QNetworkReply::sslConfiguration()`.
En interne, ` QNetworkAccessManager ` peut ouvrir plusieurs connexions vers un serveur afin de permettre le traitement parallèle des requêtes. Ces connexions peuvent être réutilisées, ce qui signifie que le signal `encrypted()` ne sera pas émis. Vous avez donc la garantie de recevoir ce signal uniquement lors de la première connexion à un site au cours du cycle de vie de ` QNetworkAccessManager`.
Voir également QSslSocket::encrypted() et QNetworkAccessManager::encrypted().
QNetworkReply::NetworkError QNetworkReply::error() const
Renvoie l'erreur détectée lors du traitement de cette requête. Si aucune erreur n'a été détectée, renvoie « NoError ».
Voir également setError().
[signal] void QNetworkReply::errorOccurred(QNetworkReply::NetworkError code)
Ce signal est émis lorsque la réponse détecte une erreur lors du traitement. Le signal ` finished()` suivra probablement, indiquant que la connexion est terminée.
Le paramètre ` code ` contient le code de l'erreur détectée. Appelez ` errorString()` pour obtenir une représentation textuelle de l'erreur.
Remarque : ne supprimezpas l’objet dans le slot connecté à ce signal. Utilisez deleteLater().
Voir également error() et errorString().
[signal] void QNetworkReply::finished()
Ce signal est émis lorsque le traitement de la réponse est terminé. Une fois ce signal émis, les données et métadonnées de la réponse ne feront plus l'objet d'aucune mise à jour.
À moins que les fonctions ` close()` ou ` abort()` n’aient été appelées, la réponse restera ouverte en lecture ; les données pourront donc être récupérées à l’aide des appels ` read()` ou ` readAll()`. En particulier, si aucun appel à ` read()` n’a été effectué à la suite de ` readyRead()`, un appel à ` readAll()` permettra de récupérer l’intégralité du contenu dans un objet ` QByteArray`.
Ce signal est émis conjointement avec QNetworkAccessManager::finished() lorsque le paramètre de réponse de ce signal est cet objet.
Remarque : ne supprimezpas l’objet dans le slot connecté à ce signal. Utilisez deleteLater().
Vous pouvez également utiliser isFinished() pour vérifier si une QNetworkReply s’est terminée avant même de recevoir le signal finished().
Voir également setFinished(), QNetworkAccessManager::finished() et isFinished().
bool QNetworkReply::hasRawHeader(QAnyStringView headerName) const
Renvoie « true » si l'en-tête brut portant le nom « headerName » a été envoyé par le serveur distant.
Remarque : dans les versions de Qt antérieures à la version 6.7, cette fonction n'acceptait que le paramètre « QByteArray ».
Voir aussi rawHeader().
QVariant QNetworkReply::header(QNetworkRequest::KnownHeaders header) const
Renvoie la valeur de l'en-tête « header » (si cet en-tête a été envoyé par le serveur distant). Si l'en-tête n'a pas été envoyé, renvoie une valeur non valide « QVariant ».
Voir également rawHeader(), setHeader() et QNetworkRequest::header().
[since 6.8] QHttpHeaders QNetworkReply::headers() const
Renvoie les en-têtes qui ont été envoyés par le serveur distant.
Cette fonction a été introduite dans Qt 6.8.
Voir également setHeaders(), QNetworkRequest::setAttribute() et QNetworkRequest::Attribute.
[virtual slot] void QNetworkReply::ignoreSslErrors()
Si cette fonction est appelée, les erreurs SSL liées à la connexion réseau seront ignorées, y compris les erreurs de validation de certificat.
Avertissement : veillez à toujours permettre à l'utilisateur de vérifier les erreurs signalées par le signal sslErrors(), et n'appelez cette méthode qu'après confirmation de la part de l'utilisateur qu'il accepte de poursuivre. En cas d'erreurs inattendues, la réponse doit être interrompue. Appeler cette méthode sans vérifier les erreurs réelles présentera très probablement un risque de sécurité pour votre application. Utilisez-la avec la plus grande prudence !
Cette fonction peut être appelée depuis le slot connecté au signal sslErrors(), qui indique quelles erreurs ont été détectées.
Remarque : si le protocole HTTP Strict Transport Security est activé pour ` QNetworkAccessManager`, cette fonction n’a aucun effet.
Remarque : ce slot est surchargé. Pour vous connecter à ce 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(); });Voir également sslConfiguration(), sslErrors() et QSslSocket::ignoreSslErrors().
void QNetworkReply::ignoreSslErrors(const QList<QSslError> &errors)
Si cette fonction est appelée, les erreurs SSL répertoriées à l'adresse errors seront ignorées.
Remarque : comme la plupart des erreurs SSL sont associées à un certificat, vous devez, pour la plupart d’entre elles, définir le certificat attendu auquel cette erreur SSL se rapporte. Si, par exemple, vous souhaitez envoyer une requête à un serveur utilisant un certificat auto-signé, considérez l’extrait de code suivant :
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.Les appels multiples à cette fonction remplaceront la liste des erreurs transmises lors des appels précédents. Vous pouvez effacer la liste des erreurs que vous souhaitez ignorer en appelant cette fonction avec une liste vide.
Remarque : si le protocole HTTP Strict Transport Security est activé pour QNetworkAccessManager, cette fonction n’a aucun effet.
Il s’agit d’une fonction surchargée.
Voir également sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors() et QNetworkAccessManager::setStrictTransportSecurityEnabled().
[virtual protected] void QNetworkReply::ignoreSslErrorsImplementation(const QList<QSslError> &errors)
Cette méthode virtuelle est fournie pour permettre de redéfinir le comportement de la méthode ` ignoreSslErrors()`. La méthode ` ignoreSslErrors()` est un wrapper public de cette méthode. La variable ` errors ` contient les erreurs que l'utilisateur souhaite ignorer.
Voir également ignoreSslErrors().
bool QNetworkReply::isFinished() const
Renvoie « true » lorsque la réponse est terminée ou a été interrompue.
Voir aussi isRunning().
bool QNetworkReply::isRunning() const
Renvoie « true » lorsque la requête est encore en cours de traitement et que la réponse n'est ni terminée ni interrompue.
Voir également isFinished().
[override virtual] bool QNetworkReply::isSequential() const
Réimplémente : QIODevice::isSequential() const.
QNetworkAccessManager *QNetworkReply::manager() const
Renvoie l'objet ` QNetworkAccessManager ` qui a servi à créer cet objet ` QNetworkReply `. Au départ, il s'agit également de l'objet parent.
[signal] void QNetworkReply::metaDataChanged()
Ce signal est émis chaque fois que les métadonnées contenues dans cette réponse changent. Les métadonnées désignent toute information autre que le contenu (les données) lui-même, y compris les en-têtes réseau. Dans la plupart des cas, les métadonnées seront entièrement connues dès la réception du premier octet de données. Il est toutefois possible de recevoir des mises à jour des en-têtes ou d’autres métadonnées pendant le traitement des données.
Voir également header(), rawHeaderList(), rawHeader() et hasRawHeader().
QNetworkAccessManager::Operation QNetworkReply::operation() const
Renvoie l'opération qui a été enregistrée pour cette réponse.
Voir également setOperation().
[signal] void QNetworkReply::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
Ce signal est émis si la négociation SSL/TLS aboutit à un ensemble de chiffrements PSK, ce qui implique qu'une authentification PSK est alors requise.
Lorsqu'il utilise la méthode PSK, le client doit envoyer au serveur une identité valide et une clé pré-partagée valide pour que la négociation SSL puisse se poursuivre. Les applications peuvent fournir ces informations dans un slot connecté à ce signal, en remplissant l'objet ` authenticator ` transmis selon leurs besoins.
Remarque : ignorer ce signal ou ne pas fournir les informations d’identification requises entraînera l’échec de la négociation et, par conséquent, l’interruption de la connexion.
Remarque : l’objet authenticator appartient à la réponse et ne doit pas être supprimé par l’application.
Voir également QSslPreSharedKeyAuthenticator.
QByteArray QNetworkReply::rawHeader(QAnyStringView headerName) const
Renvoie le contenu brut de l'en-tête « headerName » tel qu'il a été envoyé par le serveur distant. Si cet en-tête n'existe pas, renvoie un tableau d'octets vide, qui peut être impossible à distinguer d'un en-tête vide. Utilisez la fonction ` hasRawHeader()` pour vérifier si le serveur a envoyé ce champ d'en-tête.
Remarque : dans les versions de Qt antérieures à la version 6.7, cette fonction n'acceptait que l'QByteArray.
Voir également setRawHeader(), hasRawHeader() et header().
QList<QByteArray> QNetworkReply::rawHeaderList() const
Renvoie une liste des champs d'en-tête envoyés par le serveur distant, dans l'ordre où ils ont été envoyés. Les en-têtes en double sont ignorés.
const QList<QNetworkReply::RawHeaderPair> &QNetworkReply::rawHeaderPairs() const
Renvoie une liste de paires d'en-têtes brutes.
qint64 QNetworkReply::readBufferSize() const
Renvoie la taille du tampon de lecture, en octets.
Voir aussi setReadBufferSize().
[signal] void QNetworkReply::redirectAllowed()
Lorsque le code client gérant le signal ` redirected()` a vérifié la nouvelle URL, il émet ce signal pour permettre la poursuite de la redirection. Ce protocole s'applique aux requêtes réseau dont la politique de redirection est définie sur QNetworkRequest::UserVerifiedRedirectPolicy
Voir également QNetworkRequest::UserVerifiedRedirectPolicy, QNetworkAccessManager::setRedirectPolicy() et QNetworkRequest::RedirectPolicyAttribute.
[signal] void QNetworkReply::redirected(const QUrl &url)
Ce signal est émis si l'en-tête « QNetworkRequest::ManualRedirectPolicy » n'a pas été défini dans la requête et que le serveur a renvoyé un code de statut 3xx (plus précisément les codes 301, 302, 303, 305, 307 ou 308) avec une URL valide dans l'en-tête « Location », indiquant une redirection HTTP. Le paramètre « url » contient la nouvelle URL de redirection telle qu’elle a été renvoyée par le serveur dans l’en-tête « Location ».
Voir également QNetworkRequest::RedirectPolicy.
QNetworkRequest QNetworkReply::request() const
Renvoie la requête qui a donné lieu à cette réponse. Notez notamment que l'URL de la requête peut être différente de celle de la réponse.
Voir également QNetworkRequest::url(), url() et setRequest().
[signal, since 6.3] void QNetworkReply::requestSent()
Ce signal est émis une ou plusieurs fois lorsque la requête a été envoyée. Utile pour la gestion personnalisée de la progression ou des délais d'expiration.
Cette fonction a été introduite dans Qt 6.3.
Voir également metaDataChanged() et socketStartedConnecting().
[protected] void QNetworkReply::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)
Définit l'attribut « code » sur la valeur « value ». Si « code » était déjà défini, cette valeur sera remplacée. Si « value » correspond à une adresse QVariant non valide, l'attribut sera supprimé.
Voir également attribute() et QNetworkRequest::setAttribute().
[protected] void QNetworkReply::setError(QNetworkReply::NetworkError errorCode, const QString &errorString)
Définit la condition d'erreur sur « errorCode ». Le message lisible par l'utilisateur est défini à l'aide de « errorString ».
L’appel à setError() n’émet pas le signal errorOccurred(QNetworkReply::NetworkError).
Voir également error() et errorString().
[protected] void QNetworkReply::setFinished(bool finished)
Définit la réponse comme « finished ».
Une fois cette option définie, les données de la réponse ne doivent plus être modifiées.
Voir également finished() et isFinished().
[protected] void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Définit la valeur de l'en-tête connu « header » sur « value ». La forme brute correspondante de l'en-tête sera également définie.
Voir également header(), setRawHeader() et QNetworkRequest::setHeader().
[protected, since 6.8] void QNetworkReply::setHeaders(const QHttpHeaders &newHeaders)
Définit les en-têtes suivants : newHeaders dans cette réponse réseau, en remplaçant tous les en-têtes précédemment définis.
Si certains en-têtes correspondent à des en-têtes connus, ils seront analysés et la forme analysée correspondante sera également définie.
Cette fonction a été introduite dans Qt 6.8.
Voir également headers() et QNetworkRequest::KnownHeaders.
[protected, since 6.8] void QNetworkReply::setHeaders(QHttpHeaders &&newHeaders)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.8.
[protected] void QNetworkReply::setOperation(QNetworkAccessManager::Operation operation)
Définit l'opération associée à cet objet sur « operation ». Cette valeur sera renvoyée par la fonction operation().
Remarque : l'opération doit être définie lors de la création de cet objet et ne doit plus être modifiée par la suite.
Voir également operation() et setRequest().
[protected] void QNetworkReply::setRawHeader(const QByteArray &headerName, const QByteArray &value)
Définit la valeur de l'en-tête brut headerName sur value. Si headerName avait été défini auparavant, il est remplacé. Plusieurs en-têtes HTTP portant le même nom sont fonctionnellement équivalents à un seul en-tête dont les valeurs sont concaténées, séparées par des virgules.
Si headerName correspond à un en-tête connu, la valeur value sera analysée et la forme analysée correspondante sera également définie.
Voir également rawHeader(), header(), setHeader() et QNetworkRequest::setRawHeader().
[virtual] void QNetworkReply::setReadBufferSize(qint64 size)
Définit la taille du tampon de lecture à size octets. Le tampon de lecture est le tampon qui stocke les données en cours de téléchargement depuis le réseau, avant qu’elles ne soient lues à l’aide de la fonction QIODevice::read(). Définir la taille du tampon sur 0 rendra celle-ci illimitée.
QNetworkReply essaiera d'arrêter la lecture depuis le réseau une fois ce tampon plein (c'est-à-dire lorsque bytesAvailable() renvoie size ou plus), ce qui entraînera également un ralentissement du téléchargement. Si la taille du tampon n'est pas limitée, QNetworkReply tentera de télécharger aussi rapidement que possible depuis le réseau.
Contrairement à QAbstractSocket::setReadBufferSize(), QNetworkReply ne peut pas garantir la précision de la taille du tampon de lecture. Autrement dit, bytesAvailable() peut renvoyer une valeur supérieure à size.
Voir également readBufferSize().
[protected] void QNetworkReply::setRequest(const QNetworkRequest &request)
Définit la requête associée à cet objet sur request. Cette valeur sera renvoyée par la fonction request().
Remarque : la requête doit être définie lors de la création de cet objet et ne doit plus être modifiée par la suite.
Voir également request() et setOperation().
void QNetworkReply::setSslConfiguration(const QSslConfiguration &config)
Définit, si possible, la configuration SSL de la connexion réseau associée à cette requête afin qu'elle corresponde à celle de config.
Voir également sslConfiguration().
[virtual protected] void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &configuration)
Cette méthode virtuelle est fournie pour permettre de redéfinir le comportement de la méthode setSslConfiguration(). La méthode setSslConfiguration() est un wrapper public de cette méthode. Si vous redéfinissez cette méthode, utilisez la méthode configuration pour définir la configuration SSL.
Voir également sslConfigurationImplementation() et setSslConfiguration().
[protected] void QNetworkReply::setUrl(const QUrl &url)
Définit l'URL en cours de traitement sur url. En règle générale, l'URL correspond à celle de la requête envoyée, mais elle peut, pour diverses raisons, être différente (par exemple, si un chemin d'accès à un fichier est rendu absolu ou canonique).
Voir également url(), request() et QNetworkRequest::url().
[protected, since 6.8] void QNetworkReply::setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value)
Définit la valeur de l'en-tête « name » sur « value ». Si « name » avait déjà été défini, cette valeur est remplacée.
Cette fonction a été introduite dans Qt 6.8.
[signal, since 6.3] void QNetworkReply::socketStartedConnecting()
Ce signal est émis zéro ou plusieurs fois, lors de l'établissement de la connexion par le socket, avant l'envoi de la requête. Utile pour la gestion personnalisée de la progression ou des délais d'expiration.
Cette fonction a été introduite dans Qt 6.3.
Voir également metaDataChanged() et requestSent().
QSslConfiguration QNetworkReply::sslConfiguration() const
Renvoie la configuration SSL et l'état associés à cette réponse, si le protocole SSL a été utilisé. Elle contiendra le certificat du serveur distant, sa chaîne de certificats menant à l'autorité de certification, ainsi que les algorithmes de chiffrement utilisés.
Le certificat du correspondant et sa chaîne de certificats seront connus au moment où la fonction ` sslErrors()` sera appelée, si celle-ci est appelée.
Voir également setSslConfiguration().
[virtual protected] void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &configuration) const
Cette méthode virtuelle est fournie pour permettre de redéfinir le comportement de ` sslConfiguration()`. La méthode ` sslConfiguration()` est un wrapper public de cette méthode. La configuration sera renvoyée dans ` configuration`.
Voir également setSslConfigurationImplementation() et sslConfiguration().
[signal] void QNetworkReply::sslErrors(const QList<QSslError> &errors)
Ce signal est émis si la session SSL/TLS a rencontré des erreurs lors de son établissement, notamment des erreurs de vérification de certificat. Le paramètre ` errors ` contient la liste des erreurs.
Pour indiquer que ces erreurs ne sont pas fatales et que la connexion doit se poursuivre, la fonction ignoreSslErrors() doit être appelée depuis le slot connecté à ce signal. Si elle n’est pas appelée, la session SSL sera interrompue avant tout échange de données (y compris l’URL).
Ce signal peut être utilisé pour afficher un message d’erreur à l’utilisateur indiquant que la sécurité pourrait être compromise et pour afficher les paramètres SSL (voir sslConfiguration() pour les obtenir). Si l’utilisateur décide de poursuivre après avoir analysé le certificat distant, le slot doit appeler ignoreSslErrors().
Voir également QSslSocket::sslErrors(), QNetworkAccessManager::sslErrors(), sslConfiguration() et ignoreSslErrors().
[signal] void QNetworkReply::uploadProgress(qint64 bytesSent, qint64 bytesTotal)
Ce signal est émis pour indiquer la progression de la partie « envoi » de cette requête réseau, le cas échéant. Si aucune opération d'envoi n'est associée à cette requête, ce signal ne sera pas émis.
Le paramètre bytesSent indique le nombre d’octets transférés, tandis que bytesTotal indique le nombre total d’octets à transférer. Si le nombre d’octets à transférer n’a pas pu être déterminé, bytesTotal prendra la valeur -1.
Le téléchargement est terminé lorsque bytesSent est égal à bytesTotal. À ce moment-là, bytesTotal ne sera plus égal à -1.
Voir également downloadProgress().
QUrl QNetworkReply::url() const
Renvoie l'URL du contenu téléchargé ou mis en ligne. Notez que cette URL peut être différente de celle de la requête d'origine. Si les redirections étaient activées dans la requête, cette fonction renvoie alors l'URL actuelle à laquelle l'API réseau accède, c'est-à-dire l'URL de la ressource vers laquelle la requête a été redirigée.
Voir également request(), setUrl(), QNetworkRequest::url() et redirected().
[override virtual protected] qint64 QNetworkReply::writeData(const char *data, qint64 len)
Réimplémentation de : 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.