QNetworkReply Class
La classe QNetworkReply contient les données et les en-têtes d'une requête envoyée à l'adresse QNetworkAccessManager. Plus...
| En-tête : | #include <QNetworkReply> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Héritages : | 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 |
Emplacements 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 à l'adresse QNetworkAccessManager. Comme QNetworkRequest, elle contient une URL et des en-têtes (sous forme brute et analysée), des informations sur l'état de la réponse et le contenu de la réponse elle-même.
QNetworkReply est un accès séquentiel QIODevice, ce qui signifie qu'une fois que les données sont lues dans l'objet, elles ne sont plus conservées par le dispositif. Il incombe donc à l'application de conserver ces données si elle en a besoin. Chaque fois que des données supplémentaires sont reçues du réseau et traitées, le signal readyRead() est émis.
Le signal downloadProgress() est également émis lors de la réception de données, mais le nombre d'octets qu'il contient peut ne pas représenter les octets réellement reçus, si une transformation est effectuée sur le contenu (par exemple, décompression et suppression de l'overhead du protocole).
Même si QNetworkReply est un QIODevice connecté au contenu de la réponse, il émet également le signal uploadProgress(), qui indique la progression du téléchargement pour les opérations qui ont un tel contenu.
Note : Ne pas supprimer l'objet dans le slot connecté au signal errorOccurred() ou finished(). Utilisez deleteLater().
Voir également QNetworkRequest et QNetworkAccessManager.
Documentation sur les types de membres
enum QNetworkReply::NetworkError
Indique toutes les conditions d'erreur possibles constatées lors du traitement de la demande.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
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 avec l'attribut QNetworkRequest::RedirectionTargetAttribute.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QNetworkReply::ConnectionRefusedError | 1 | le serveur distant a refusé la connexion (le serveur n'accepte pas les demandes) |
QNetworkReply::RemoteHostClosedError | 2 | le serveur distant a fermé la connexion prématurément, avant que la totalité de la réponse n'ait été reçue et traitée |
QNetworkReply::HostNotFoundError | 3 | le nom de l'hôte distant n'a pas été trouvé (nom d'hôte invalide) |
QNetworkReply::TimeoutError | 4 | la connexion au serveur distant a expiré |
QNetworkReply::OperationCanceledError | 5 | l'opération a été annulée par des appels à abort() ou close() avant qu'elle ne soit terminée. |
QNetworkReply::SslHandshakeFailedError | 6 | la prise de contact SSL/TLS a échoué et le canal crypté 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 initié une itinérance vers un autre point d'accès. La demande doit être soumise à nouveau 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 du démarrage du réseau. |
QNetworkReply::BackgroundRequestNotAllowedError | 9 | la demande en arrière-plan n'est pas autorisée actuellement en raison de la politique de la plate-forme. |
QNetworkReply::TooManyRedirectsError | 10 | lors du suivi des redirections, la limite maximale a été atteinte. La limite est par défaut fixée à 50 ou définie par QNetworkRequest::setMaxRedirectsAllowed(). (Cette valeur a été introduite dans la version 5.6.) |
QNetworkReply::InsecureRedirectError | 11 | en suivant les redirections, l'API d'accès au réseau a détecté une redirection d'un protocole crypté (https) vers un protocole non crypté (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 demandes) |
QNetworkReply::ProxyConnectionClosedError | 102 | le serveur proxy a fermé la connexion prématurément, avant que la réponse complète n'ait été reçue et traitée |
QNetworkReply::ProxyNotFoundError | 103 | le nom d'hôte du proxy n'a pas été trouvé (nom d'hôte du proxy invalide) |
QNetworkReply::ProxyTimeoutError | 104 | la connexion au proxy a expiré ou le proxy n'a pas répondu à temps à la demande envoyée |
QNetworkReply::ProxyAuthenticationRequiredError | 105 | le proxy exige une authentification pour honorer la demande, mais n'a pas accepté les informations d'identification proposées (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 nécessite une authentification pour servir le contenu, mais les informations d'identification fournies n'ont pas été acceptées (le cas échéant) |
QNetworkReply::ContentReSendError | 205 | la demande a dû être renvoyée, mais cela a échoué, par exemple parce que les données téléchargées n'ont pas pu être lues une deuxième fois. |
QNetworkReply::ContentConflictError | 206 | la demande n'a pas pu être traitée 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 situation inattendue qui l'a empêché de répondre à la demande. |
QNetworkReply::OperationNotImplementedError | 402 | le serveur ne prend pas en charge la fonctionnalité requise pour répondre à la demande. |
QNetworkReply::ServiceUnavailableError | 403 | le serveur n'est pas en mesure de traiter la demande pour le moment. |
QNetworkReply::ProtocolUnknownError | 301 | l'API d'accès au réseau ne peut pas honorer la demande car le protocole n'est pas connu |
QNetworkReply::ProtocolInvalidOperationError | 302 | l'opération demandée n'est pas valide pour ce protocole |
QNetworkReply::UnknownNetworkError | 99 | une erreur inconnue liée au réseau 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 défaillance du protocole a été détectée (erreur d'analyse, réponses invalides 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 une std::paire<QByteArray, QByteArray> où le premier QByteArray est le nom de l'en-tête et le second est l'en-tête.
Documentation des fonctions membres
[explicit protected] QNetworkReply::QNetworkReply(QObject *parent = nullptr)
Crée un objet QNetworkReply avec le parent parent.
Vous ne pouvez pas instancier directement les objets QNetworkReply. Utilisez les fonctions QNetworkAccessManager pour le faire.
[virtual noexcept] QNetworkReply::~QNetworkReply()
Élimine 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 aussi 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 téléchargements en cours sont également interrompus.
Le signal finished() est également émis.
Voir aussi 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 invalide QVariant (type QMetaType::UnknownType).
Vous pouvez vous attendre à ce que les valeurs par défaut énumérées à l'adresse 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 à la lecture. Les données non lues sont supprimées, mais les ressources réseau ne sont pas supprimées tant qu'elles ne sont pas terminées. En particulier, si un téléchargement est en cours, il se poursuivra jusqu'à ce qu'il soit terminé.
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, s'il y en a une. S'il n'y a pas de téléchargement associé à cette demande, ce signal sera émis une fois avec 0 comme valeur des 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 à télécharger. Si le nombre d'octets à télécharger n'est pas connu, la valeur de bytesTotal sera -1.
Le téléchargement est terminé lorsque bytesReceived est égal à bytesTotal. À ce moment-là, bytesTotal ne sera pas -1.
Notez que les valeurs de bytesReceived et bytesTotal peuvent être différentes de size(), du nombre total d'octets obtenu par read() ou readAll(), ou de la valeur de l'en-tête (ContentLengthHeader). La raison en est qu'il peut y avoir une surcharge de protocole ou que les données peuvent être compressé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 terminé avec succès la poignée de main initiale. À ce stade, aucune donnée utilisateur n'a é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 que 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 QNetworkReply::abort() par un slot connecté à ce signal. La configuration SSL utilisée peut être inspectée à l'aide de la méthode QNetworkReply::sslConfiguration().
En interne, QNetworkAccessManager peut ouvrir plusieurs connexions à un serveur, afin de lui permettre de traiter les demandes en parallèle. Ces connexions peuvent être réutilisées, ce qui signifie que le signal encrypted() ne sera pas émis. Cela signifie que vous n'êtes assuré de recevoir ce signal que pour la première connexion à un site au cours de la durée de vie du site QNetworkAccessManager.
Voir également QSslSocket::encrypted() et QNetworkAccessManager::encrypted().
QNetworkReply::NetworkError QNetworkReply::error() const
Renvoie l'erreur qui a été trouvée pendant le traitement de cette demande. Si aucune erreur n'a été trouvée, elle renvoie NoError.
Voir aussi setError().
[signal] void QNetworkReply::errorOccurred(QNetworkReply::NetworkError code)
Ce signal est émis lorsque la réponse détecte une erreur de 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 la condition d'erreur.
Note : Ne supprimez pas 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é. Après l'émission de ce signal, il n'y aura plus de mise à jour des données ou des métadonnées de la réponse.
À moins que close() ou abort() n'ait été appelé, la réponse sera toujours ouverte à la lecture, de sorte que les données pourront être récupérées par 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 message QByteArray.
Ce signal est émis en tandem avec QNetworkAccessManager::finished() où le paramètre de réponse de ce signal est cet objet.
Remarque : ne supprimez pas l'objet dans le slot connecté à ce signal. Utilisez deleteLater().
Vous pouvez également utiliser isFinished() pour vérifier si une action QNetworkReply est terminée avant même de recevoir le signal finished().
Voir aussi setFinished(), QNetworkAccessManager::finished() et isFinished().
bool QNetworkReply::hasRawHeader(QAnyStringView headerName) const
Renvoie true si l'en-tête brut du nom headerName a été envoyé par le serveur distant.
Remarque : dans les versions de Qt antérieures à la version 6.7, cette fonction ne prenait que QByteArray.
Voir aussi rawHeader().
QVariant QNetworkReply::header(QNetworkRequest::KnownHeaders header) const
Renvoie la valeur de l'en-tête connu header, si cet en-tête a été envoyé par le serveur distant. Si l'en-tête n'a pas été envoyé, il renvoie une valeur invalide QVariant.
Voir aussi 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 aussi 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.
Attention : Veillez à toujours laisser l'utilisateur examiner les erreurs signalées par le signal sslErrors(), et n'appelez cette méthode qu'après confirmation par l'utilisateur que tout se passe bien. En cas d'erreurs inattendues, la réponse doit être interrompue. Appeler cette méthode sans inspecter les erreurs réelles posera très probablement un risque de sécurité pour votre application. Utilisez-la avec beaucoup de précautions !
Cette fonction peut être appelée à partir du slot connecté au signal sslErrors(), qui indique quelles erreurs ont été trouvées.
Note : Si HTTP Strict Transport Security est activé pour QNetworkAccessManager, cette fonction n'a aucun effet.
Note : Ce slot est surchargé. Pour se 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 aussi sslConfiguration(), sslErrors(), et QSslSocket::ignoreSslErrors().
void QNetworkReply::ignoreSslErrors(const QList<QSslError> &errors)
Si cette fonction est appelée, les erreurs SSL indiquées dans 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 l'erreur SSL est liée. Si, par exemple, vous voulez envoyer une requête à un serveur qui utilise un certificat auto-signé, considérez l'extrait 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.
Plusieurs appels à 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 aussi 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 surcharger le comportement de ignoreSslErrors(). ignoreSslErrors() est une enveloppe publique pour cette méthode. 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 demande est encore en cours de traitement et que la réponse n'est pas encore terminée ou n'a pas encore été interrompue.
Voir aussi isFinished().
[override virtual] bool QNetworkReply::isSequential() const
Réimplémente : QIODevice::isSequential() const.
QNetworkAccessManager *QNetworkReply::manager() const
Renvoie l'adresse QNetworkAccessManager qui a été utilisée pour créer cet objet QNetworkReply. Initialement, il s'agit également de l'objet parent.
[signal] void QNetworkReply::metaDataChanged()
Ce signal est émis chaque fois que les métadonnées de cette réponse changent. Les métadonnées sont toutes les informations qui ne sont pas le contenu (données) lui-même, y compris les en-têtes de réseau. Dans la majorité des cas, les métadonnées seront entièrement connues au moment où le premier octet de données est reçu. Toutefois, il est 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é postée pour cette réponse.
Voir aussi setOperation().
[signal] void QNetworkReply::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
Ce signal est émis si la poignée de main SSL/TLS négocie une suite de chiffrement PSK et qu'une authentification PSK est donc nécessaire.
Lors de l'utilisation de la PSK, le client doit envoyer au serveur une identité valide et une clé pré-partagée valide, afin que la poignée de main SSL puisse se poursuivre. Les applications peuvent fournir ces informations dans un slot connecté à ce signal, en remplissant l'objet authenticator en fonction de leurs besoins.
Remarque : le fait d'ignorer ce signal ou de ne pas fournir les informations d'identification requises entraîne l'échec de la poignée de main 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 est envoyé par le serveur distant. S'il n'y a pas d'en-tête, il renvoie un tableau d'octets vide, qui peut être impossible à distinguer d'un en-tête vide. Utilisez hasRawHeader() pour vérifier si le serveur a envoyé un tel champ d'en-tête.
Remarque : dans les versions de Qt antérieures à la version 6.7, cette fonction ne prenait que QByteArray.
Voir aussi setRawHeader(), hasRawHeader() et header().
QList<QByteArray> QNetworkReply::rawHeaderList() const
Renvoie une liste des champs d'en-tête qui ont été 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 bruts.
qint64 QNetworkReply::readBufferSize() const
Renvoie la taille du tampon de lecture, en octets.
Voir aussi setReadBufferSize().
[signal] void QNetworkReply::redirectAllowed()
Lorsque le code client qui traite le signal redirected() a vérifié la nouvelle URL, il émet ce signal pour autoriser 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 le paramètre QNetworkRequest::ManualRedirectPolicy n'a pas été défini dans la requête et que le serveur a répondu par un statut 3xx (spécifiquement 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 renvoyée par le serveur dans l'en-tête location.
Voir aussi QNetworkRequest::RedirectPolicy.
QNetworkRequest QNetworkReply::request() const
Renvoie la demande qui a été postée pour cette réponse. Notez en particulier que l'URL de la demande peut être différente de celle de la réponse.
Voir aussi QNetworkRequest::url(), url() et setRequest().
[signal, since 6.3] void QNetworkReply::requestSent()
Ce signal est émis une ou plusieurs fois lorsque la demande a été envoyée. Utile pour une gestion personnalisée de la progression ou du délai d'attente.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi metaDataChanged() et socketStartedConnecting().
[protected] void QNetworkReply::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)
Attribue à l'attribut code la valeur value. Si code a été défini précédemment, il sera remplacé. Si value est un QVariant invalide, l'attribut sera désactivé.
Voir aussi attribute() et QNetworkRequest::setAttribute().
[protected] void QNetworkReply::setError(QNetworkReply::NetworkError errorCode, const QString &errorString)
Définit la condition d'erreur comme étant errorCode. Le message lisible par l'homme est défini par errorString.
L'appel à setError() n'émet pas le signal errorOccurred(QNetworkReply::NetworkError).
Voir aussi error() et errorString().
[protected] void QNetworkReply::setFinished(bool finished)
Définit la réponse comme finished.
Une fois ce paramètre défini, les données de la réponse ne doivent pas être modifiées.
Voir aussi finished() et isFinished().
[protected] void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Fixe l'en-tête connu header à la valeur value. La forme brute correspondante de l'en-tête sera également définie.
Voir aussi header(), setRawHeader() et QNetworkRequest::setHeader().
[protected, since 6.8] void QNetworkReply::setHeaders(const QHttpHeaders &newHeaders)
Définit newHeaders comme en-tête dans cette réponse du réseau, en remplaçant tout en-tête précédemment défini.
Si certains en-têtes correspondent aux 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 aussi 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 comme étant operation. Cette valeur sera renvoyée par operation().
Remarque : l'opération doit être définie lors de la création de l'objet et ne doit plus être modifiée.
Voir également operation() et setRequest().
[protected] void QNetworkReply::setRawHeader(const QByteArray &headerName, const QByteArray &value)
Fixe la valeur de l'en-tête brut headerName à value. Si headerName a été défini précédemment, 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 et 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 aussi rawHeader(), header(), setHeader() et QNetworkRequest::setRawHeader().
[virtual] void QNetworkReply::setReadBufferSize(qint64 size)
Fixe la taille du tampon de lecture à size octets. Le tampon de lecture est le tampon qui contient les données téléchargées sur le réseau, avant qu'elles ne soient lues à l'aide de QIODevice::read(). En fixant la taille du tampon à 0, la taille du tampon sera illimitée.
QNetworkReply Si la taille de la mémoire tampon n'est pas limitée, bytesAvailable() essaiera d'arrêter la lecture à partir du réseau une fois que cette mémoire tampon sera pleine (c'est-à-dire si () renvoie size ou plus), ce qui entraînera également une réduction du téléchargement. Si la taille de la mémoire tampon n'est pas limitée, QNetworkReply essaiera de télécharger aussi vite que possible à partir du réseau.
Contrairement à QAbstractSocket::setReadBufferSize(), QNetworkReply ne peut pas garantir la précision de la taille du tampon de lecture. En d'autres termes, bytesAvailable() peut renvoyer plus que size.
Voir également readBufferSize().
[protected] void QNetworkReply::setRequest(const QNetworkRequest &request)
Définit la demande associée à cet objet comme étant request. Cette valeur sera renvoyée par request().
Remarque : la demande doit être définie lors de la création de l'objet et ne doit plus être modifiée.
Voir également request() et setOperation().
void QNetworkReply::setSslConfiguration(const QSslConfiguration &config)
Définit la configuration SSL pour la connexion réseau associée à cette demande, si possible, comme étant celle de config.
Voir aussi sslConfiguration().
[virtual protected] void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &configuration)
Cette méthode virtuelle est fournie pour permettre de surcharger le comportement de setSslConfiguration(). setSslConfiguration() est une enveloppe publique pour cette méthode. Si vous surchargez cette méthode, utilisez configuration pour définir la configuration SSL.
Voir aussi sslConfigurationImplementation() et setSslConfiguration().
[protected] void QNetworkReply::setUrl(const QUrl &url)
Définit l'URL en cours de traitement comme étant url. Normalement, l'URL correspond à celle de la requête qui a été postée, mais pour diverses raisons, elle peut être différente (par exemple, un chemin d'accès à un fichier rendu absolu ou canonique).
Voir aussi url(), request() et QNetworkRequest::url().
[protected, since 6.8] void QNetworkReply::setWellKnownHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value)
Fixe la valeur de l'en-tête name à value. Si name a été défini précédemment, il est remplacé.
Cette fonction a été introduite dans Qt 6.8.
[signal, since 6.3] void QNetworkReply::socketStartedConnecting()
Ce signal est émis 0 fois ou plus, lorsque la socket se connecte, avant d'envoyer la requête. Utile pour une gestion personnalisée de la progression ou du délai d'attente.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi metaDataChanged() et requestSent().
QSslConfiguration QNetworkReply::sslConfiguration() const
Renvoie la configuration et l'état SSL associés à cette réponse, si SSL a été utilisé. Il 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 de l'homologue et sa chaîne de certificats seront connus au moment où sslErrors() sera émis, s'il est émis.
Voir aussi setSslConfiguration().
[virtual protected] void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &configuration) const
Cette méthode virtuelle est fournie pour permettre de surcharger le comportement de sslConfiguration(). sslConfiguration() est une enveloppe publique pour cette méthode. La configuration sera renvoyée à configuration.
Voir aussi 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 la configuration, y compris des erreurs de vérification de certificat. Le paramètre errors contient la liste des erreurs.
Pour indiquer que les erreurs ne sont pas fatales et que la connexion doit se poursuivre, la fonction ignoreSslErrors() doit être appelée à partir du slot connecté à ce signal. Si elle n'est pas appelée, la session SSL sera interrompue avant qu'aucune donnée ne soit échangée (y compris l'URL).
Ce signal peut être utilisé pour afficher un message d'erreur à l'utilisateur indiquant que la sécurité peut être compromise et pour afficher les paramètres SSL (voir sslConfiguration() pour les obtenir). Si l'utilisateur décide de continuer après avoir analysé le certificat distant, la fente doit appeler ignoreSslErrors().
Voir aussi 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 téléchargement de cette demande réseau, s'il y en a une. Si aucun téléchargement n'est associé à cette demande, ce signal n'est pas émis.
Le paramètre bytesSent indique le nombre d'octets téléchargés, tandis que bytesTotal indique le nombre total d'octets à télécharger. Si le nombre d'octets à télécharger n'a pas pu être déterminé, bytesTotal sera égal à -1.
Le téléchargement est terminé lorsque bytesSent est égal à bytesTotal. À ce moment-là, bytesTotal ne vaudra pas -1.
Voir aussi downloadProgress().
QUrl QNetworkReply::url() const
Renvoie l'URL du contenu téléchargé ou téléversé. Notez que l'URL peut être différente de celle de la demande initiale. Si des redirections ont été activées dans la demande, cette fonction renvoie l'URL actuelle à laquelle l'API réseau accède, c'est-à-dire l'URL de la ressource vers laquelle la demande a été redirigée.
Voir aussi request(), setUrl(), QNetworkRequest::url(), et redirected().
[override virtual protected] qint64 QNetworkReply::writeData(const char *data, qint64 len)
Réimplémente : 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.