Sur cette page

QNetworkAccessManager Class

La classe QNetworkAccessManager permet à l'application d'envoyer des requêtes réseau et de recevoir des réponses. Plus d'informations...

En-tête : #include <QNetworkAccessManager>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network
Héritages : QObject

Note : Toutes les fonctions de cette classe sont réentrantes.

Types publics

enum Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation }

Fonctions publiques

QNetworkAccessManager(QObject *parent = nullptr)
virtual ~QNetworkAccessManager()
void addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)
bool autoDeleteReplies() const
QAbstractNetworkCache *cache() const
void clearAccessCache()
void clearConnectionCache()
void connectToHost(const QString &hostName, quint16 port = 80)
void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
void connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
QNetworkCookieJar *cookieJar() const
QNetworkReply *deleteResource(const QNetworkRequest &request)
void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())
QNetworkReply *get(const QNetworkRequest &request)
(since 6.7) QNetworkReply *get(const QNetworkRequest &request, QIODevice *data)
(since 6.7) QNetworkReply *get(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply *head(const QNetworkRequest &request)
bool isStrictTransportSecurityEnabled() const
bool isStrictTransportSecurityStoreEnabled() const
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data)
(since 6.8) QNetworkReply *post(const QNetworkRequest &request, std::nullptr_t nptr)
QNetworkProxy proxy() const
QNetworkProxyFactory *proxyFactory() const
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data)
(since 6.8) QNetworkReply *put(const QNetworkRequest &request, std::nullptr_t nptr)
QNetworkRequest::RedirectPolicy redirectPolicy() const
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
void setAutoDeleteReplies(bool shouldAutoDelete)
void setCache(QAbstractNetworkCache *cache)
void setCookieJar(QNetworkCookieJar *cookieJar)
void setProxy(const QNetworkProxy &proxy)
void setProxyFactory(QNetworkProxyFactory *factory)
void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
void setStrictTransportSecurityEnabled(bool enabled)
void setTransferTimeout(int timeout)
(since 6.7) void setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)
QList<QHstsPolicy> strictTransportSecurityHosts() const
virtual QStringList supportedSchemes() const
int transferTimeout() const
(since 6.7) std::chrono::milliseconds transferTimeoutAsDuration() const

Signaux

void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
void encrypted(QNetworkReply *reply)
void finished(QNetworkReply *reply)
void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

Fonctions protégées

virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

Description détaillée

L'API d'accès au réseau est construite autour d'un objet QNetworkAccessManager, qui contient la configuration et les paramètres communs pour les demandes qu'il envoie. Il contient la configuration du proxy et du cache, ainsi que les signaux liés à ces questions et les signaux de réponse qui peuvent être utilisés pour surveiller la progression d'une opération réseau. Une instance de QNetworkAccessManager devrait suffire pour l'ensemble de l'application Qt. Comme QNetworkAccessManager est basé sur QObject, il ne peut être utilisé qu'à partir du thread auquel il appartient.

Une fois qu'un objet QNetworkAccessManager a été créé, l'application peut l'utiliser pour envoyer des requêtes sur le réseau. Un groupe de fonctions standard est fourni, qui accepte une requête et des données facultatives, et renvoie chacune un objet QNetworkReply. L'objet renvoyé est utilisé pour obtenir toutes les données renvoyées en réponse à la demande correspondante.

Un simple téléchargement à partir du réseau peut être réalisé avec :

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, &QNetworkAccessManager::finished,
        this, &MyClass::replyFinished);

manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

QNetworkAccessManager possède une API asynchrone. Lorsque le slot replyFinished ci-dessus est appelé, le paramètre qu'il prend est l'objet QNetworkReply contenant les données téléchargées ainsi que les métadonnées (en-têtes, etc.).

Remarque : une fois la requête terminée, il incombe à l'utilisateur de supprimer l'objet QNetworkReply au moment opportun. Ne le supprimez pas directement à l'intérieur du slot connecté à finished(). Vous pouvez utiliser la fonction deleteLater().

Note : QNetworkAccessManager met en file d'attente les demandes qu'il reçoit. Le nombre de demandes exécutées en parallèle dépend du protocole. Actuellement, pour le protocole HTTP sur les plates-formes de bureau, 6 demandes sont exécutées en parallèle pour une combinaison hôte/port.

Remarque : QNetworkAccessManager ne gère pas correctement la section 8.2.2 de la RFC 2616, en ce sens qu'il ne réagit pas aux données entrantes tant qu'il n'a pas fini d'écrire. Par exemple, le téléchargement d'un gros fichier ne s'arrêtera pas même si le serveur renvoie un code d'état indiquant au client de ne pas continuer.

Un exemple plus complexe, en supposant que le gestionnaire existe déjà, peut être :

QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead);
connect(reply, &QNetworkReply::errorOccurred,
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

Depuis Qt 6.11, les valeurs par défaut des paramètres TCP Keepalive utilisés par QNetworkAccessManager ont été modifiées. Avec les paramètres actuels, la connexion sera interrompue après 2 minutes d'inactivité.

Ces paramètres peuvent être modifiés dans le cadre de demandes individuelles, afin de les rendre plus indulgents ou même plus agressifs via l'API QNetworkRequest.

QNetworkRequest networkRequest(url);
networkRequest.setTcpKeepAliveIdleTimeBeforeProbes(20s);
networkRequest.setTcpKeepAliveIntervalBetweenProbes(2s);
networkRequest.setTcpKeepAliveProbeCount(5);

Dans l'extrait ci-dessus, nous choisissons une stratégie plus agressive, qui consiste à mettre fin à la connexion après trente secondes d'inactivité. Cela peut être utile, par exemple, pour la détection précoce des blocages de réseau causés par des changements de réseau sous Linux.

Voir aussi QNetworkRequest, QNetworkReply, et QNetworkProxy.

Documentation sur les types de membres

enum QNetworkAccessManager::Operation

Indique l'opération que cette réponse est en train de traiter.

ConstanteValeurDescription de l'opération
QNetworkAccessManager::HeadOperation1opération de récupération des en-têtes (créée avec head())
QNetworkAccessManager::GetOperation2opération de récupération des en-têtes et de téléchargement du contenu (créée avec get())
QNetworkAccessManager::PutOperation3opération de téléchargement de contenu (créée avec put())
QNetworkAccessManager::PostOperation4envoyer le contenu d'un formulaire HTML pour traitement via HTTP POST (créé avec post())
QNetworkAccessManager::DeleteOperation5opération de suppression de contenu (créée avec deleteResource())
QNetworkAccessManager::CustomOperation6opération personnalisée (créée avec sendCustomRequest())

Voir aussi QNetworkReply::operation().

Documentation des fonctions membres

[explicit] QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)

Construit un objet QNetworkAccessManager qui est le centre de l'API d'accès au réseau et définit parent comme l'objet parent.

[virtual noexcept] QNetworkAccessManager::~QNetworkAccessManager()

Détruit l'objet QNetworkAccessManager et libère les ressources. Notez que les objets QNetworkReply renvoyés par cette classe ont cet objet comme parent, ce qui signifie qu'ils seront supprimés en même temps que lui si vous n'appelez pas QObject::setParent() sur eux.

void QNetworkAccessManager::addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)

Ajoute les règles HTTP Strict Transport Security au cache HSTS. knownHosts contient les hôtes connus qui ont des informations sur QHstsPolicy.

Remarque : une politique qui a expiré supprimera un hôte connu du cache, s'il était présent auparavant.

Remarque : lors du traitement des réponses HTTP, QNetworkAccessManager peut également mettre à jour le cache HSTS, en supprimant ou en mettant à jour les politiques de sortie ou en introduisant de nouvelles politiques knownHosts. L'implémentation actuelle est donc pilotée par le serveur, le code client peut fournir à QNetworkAccessManager des politiques précédemment connues ou découvertes, mais ces informations peuvent être remplacées par des en-têtes de réponse "Strict-Transport-Security".

Voir aussi strictTransportSecurityHosts(), enableStrictTransportSecurityStore(), et QHstsPolicy.

[signal] void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)

Ce signal est émis lorsqu'un serveur final demande une authentification avant de livrer le contenu demandé. Le slot connecté à ce signal doit remplir les informations d'identification du contenu (qui peuvent être déterminées en inspectant l'objet reply ) dans l'objet authenticator.

QNetworkAccessManager met en cache les informations d'identification en interne et envoie les mêmes valeurs si le serveur demande à nouveau une authentification, sans émettre le signal authenticationRequired(). S'il rejette les informations d'identification, ce signal sera à nouveau émis.

Remarque : pour que la demande n'envoie pas d'informations d'identification, vous ne devez pas appeler setUser() ou setPassword() sur l'objet authenticator. Cela entraînera l'émission du signal finished() avec un message QNetworkReply et une erreur AuthenticationRequiredError.

Remarque : il n'est pas possible d'utiliser une QueuedConnection pour se connecter à ce signal, car la connexion échouera si l'authentificateur n'a pas été complété avec de nouvelles informations lorsque le signal revient.

Voir également proxyAuthenticationRequired(), QAuthenticator::setUser() et QAuthenticator::setPassword().

bool QNetworkAccessManager::autoDeleteReplies() const

Renvoie la valeur true si QNetworkAccessManager est actuellement configuré pour supprimer automatiquement les QNetworkReplies, false dans le cas contraire.

Voir aussi setAutoDeleteReplies et QNetworkRequest::AutoDeleteReplyOnFinishAttribute.

QAbstractNetworkCache *QNetworkAccessManager::cache() const

Renvoie le cache utilisé pour stocker les données obtenues à partir du réseau.

Voir aussi setCache().

void QNetworkAccessManager::clearAccessCache()

Vide le cache interne des données d'authentification et des connexions réseau.

Cette fonction est utile pour effectuer des tests automatiques.

Voir aussi clearConnectionCache().

void QNetworkAccessManager::clearConnectionCache()

Vide le cache interne des connexions réseau. Contrairement à clearAccessCache(), les données d'authentification sont préservées.

Voir aussi clearAccessCache().

void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)

Établit une connexion avec l'hôte indiqué par hostName sur le port port. Cette fonction est utile pour achever la prise de contact TCP avec un hôte avant que la requête HTTP ne soit effectuée, ce qui permet de réduire le temps de latence du réseau.

Remarque : cette fonction n'a pas la possibilité de signaler des erreurs.

Voir aussi connectToHostEncrypted(), get(), post(), put() et deleteResource().

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())

Établit une connexion avec l'hôte indiqué par hostName sur le port port, en utilisant sslConfiguration. Cette fonction est utile pour achever l'échange TCP et SSL avec un hôte avant que la requête HTTPS ne soit effectuée, ce qui permet de réduire la latence du réseau.

Remarque : la préconnexion d'une connexion HTTP/2 peut être effectuée en appelant setAllowedNextProtocols() sur sslConfiguration avec QSslConfiguration::ALPNProtocolHTTP2 contenu dans la liste des protocoles autorisés. Lors de l'utilisation de HTTP/2, une seule connexion par hôte est suffisante, c'est-à-dire qu'appeler cette méthode plusieurs fois par hôte n'entraînera pas de transactions plus rapides sur le réseau.

Remarque : cette fonction n'a pas la possibilité de signaler des erreurs.

Voir aussi connectToHost(), get(), post(), put() et deleteResource().

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)

Établit une connexion avec l'hôte indiqué par hostName sur le port port, en utilisant sslConfiguration avec peerName défini comme nom d'hôte utilisé pour la validation du certificat. Cette fonction est utile pour terminer l'échange TCP et SSL avec un hôte avant que la requête HTTPS ne soit effectuée, ce qui permet de réduire la latence du réseau.

Remarque : la préconnexion d'une connexion HTTP/2 peut être effectuée en appelant setAllowedNextProtocols() sur sslConfiguration avec QSslConfiguration::ALPNProtocolHTTP2 contenu dans la liste des protocoles autorisés. Lors de l'utilisation de HTTP/2, une seule connexion par hôte est suffisante, c'est-à-dire qu'appeler cette méthode plusieurs fois par hôte n'entraînera pas de transactions plus rapides sur le réseau.

Note : Cette fonction n'a pas la possibilité de signaler des erreurs.

Il s'agit d'une fonction surchargée.

Voir aussi connectToHost(), get(), post(), put() et deleteResource().

QNetworkCookieJar *QNetworkAccessManager::cookieJar() const

Renvoie l'adresse QNetworkCookieJar qui est utilisée pour stocker les cookies obtenus du réseau ainsi que les cookies qui sont sur le point d'être envoyés.

Voir aussi setCookieJar().

[virtual protected] QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

Renvoie un nouvel objet QNetworkReply pour gérer l'opération op et la demande originalReq. Le dispositif outgoingData est toujours 0 pour les requêtes Get et Head, mais c'est la valeur passée à post() et put() dans ces opérations (les variantes QByteArray passeront un objet QBuffer ).

L'implémentation par défaut appelle QNetworkCookieJar::cookiesForUrl() sur le pot de cookies défini avec setCookieJar() pour obtenir les cookies à envoyer au serveur distant.

L'objet renvoyé doit être dans un état ouvert.

QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)

Envoie une demande de suppression de la ressource identifiée par l'URL de request.

Remarque : cette fonction n'est actuellement disponible que pour HTTP, en exécutant une requête HTTP DELETE.

Voir également get(), post(), put() et sendCustomRequest().

void QNetworkAccessManager::enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())

Si enabled est true, le cache interne HSTS utilisera une mémoire persistante pour lire et écrire les politiques HSTS. storeDir définit l'emplacement de cette mémoire. L'emplacement par défaut est défini par QStandardPaths::CacheLocation. S'il n'y a pas de QStandartPaths::CacheLocation inscriptible et que storeDir est une chaîne vide, le magasin sera situé dans le répertoire de travail du programme.

Remarque : si le cache HSTS contient déjà des règles HSTS au moment où la mémoire persistante est activée, ces règles seront conservées dans la mémoire. Si le cache et le magasin contiennent tous deux les mêmes hôtes connus, les règles du cache sont considérées comme plus récentes (et écrasent donc les valeurs précédentes du magasin). Si ce comportement n'est pas souhaité, activez le magasin HSTS avant d'activer Strict Transport Security. Par défaut, la mémoire persistante des règles HSTS est désactivée.

Voir également isStrictTransportSecurityStoreEnabled(), setStrictTransportSecurityEnabled() et QStandardPaths::standardLocations().

[signal] void QNetworkAccessManager::encrypted(QNetworkReply *reply)

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 contrôles supplémentaires sur la chaîne de certificats, par exemple pour avertir les utilisateurs que le certificat d'un site web a changé. Le paramètre reply spécifie la réponse du réseau responsable. 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 de QNetworkAccessManager.

Voir également QSslSocket::encrypted() et QNetworkReply::encrypted().

[signal] void QNetworkAccessManager::finished(QNetworkReply *reply)

Ce signal est émis lorsqu'une réponse réseau en attente est terminée. Le paramètre reply contient un pointeur sur la réponse qui vient de se terminer. Ce signal est émis en même temps que le signal QNetworkReply::finished().

Voir QNetworkReply::finished() pour plus d'informations sur l'état de l'objet.

Remarque : ne supprimez pas l'objet reply dans le slot connecté à ce signal. Utilisez deleteLater().

Voir aussi QNetworkReply::finished() et QNetworkReply::error().

QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)

Envoie une requête pour obtenir le contenu de la cible request et renvoie un nouvel objet QNetworkReply ouvert à la lecture qui émet le signal readyRead() chaque fois que de nouvelles données arrivent.

Le contenu ainsi que les en-têtes associés seront téléchargés.

Voir aussi post(), put(), deleteResource() et sendCustomRequest().

[since 6.7] QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, QIODevice *data)

Note : Une requête GET avec un corps de message n'est pas mise en cache.

Remarque : Si la demande est redirigée, le corps du message ne sera conservé que si le code d'état est 308.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

[since 6.7] QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, const QByteArray &data)

Note : Une requête GET avec un corps de message n'est pas mise en cache.

Remarque : Si la demande est redirigée, le corps du message ne sera conservé que si le code d'état est 308.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

Envoie une requête pour obtenir les en-têtes de réseau pour request et renvoie un nouvel objet QNetworkReply qui contiendra ces en-têtes.

La fonction est nommée d'après la requête HTTP associée (HEAD).

bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const

Renvoie un message indiquant que la fonction HTTP Strict Transport Security (HSTS) a été activée. Par défaut, HSTS est désactivé.

Voir aussi setStrictTransportSecurityEnabled().

bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const

Retourne true si le cache HSTS utilise un magasin permanent pour charger et stocker les politiques HSTS.

Voir également enableStrictTransportSecurityStore().

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)

Envoie une requête HTTP POST à la destination spécifiée par request et renvoie un nouvel objet QNetworkReply ouvert à la lecture qui contiendra la réponse envoyée par le serveur. Le contenu du dispositif data sera téléchargé sur le serveur.

data doit être ouvert à la lecture et doit rester valide jusqu'à ce que le signal finished() soit émis pour cette réponse.

Remarque : l'envoi d'une requête POST sur des protocoles autres que HTTP et HTTPS n'est pas défini et échouera probablement.

Voir aussi get(), put(), deleteResource() et sendCustomRequest().

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)

Envoie le contenu du message multiPart à la destination spécifiée par request.

Cette fonction peut être utilisée pour l'envoi de messages MIME multipartites via HTTP.

Il s'agit d'une fonction surchargée.

Voir aussi QHttpMultiPart, QHttpPart, et put().

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)

Envoie le contenu du tableau d'octets data à la destination spécifiée par request.

Il s'agit d'une fonction surchargée.

[since 6.8] QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, std::nullptr_t nptr)

Envoie la requête POST spécifiée par request sans corps et renvoie un nouvel objet QNetworkReply.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.8.

[signal] void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, 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. L'objet reply est le QNetworkReply qui négocie de telles suites de chiffrement.

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.

QNetworkProxy QNetworkAccessManager::proxy() const

Renvoie l'adresse QNetworkProxy que les requêtes envoyées à l'aide de cet objet QNetworkAccessManager utiliseront. La valeur par défaut du proxy est QNetworkProxy::DefaultProxy.

Voir aussi setProxy(), setProxyFactory() et proxyAuthenticationRequired().

[signal] void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)

Ce signal est émis lorsqu'un proxy demande une authentification et que QNetworkAccessManager ne trouve pas d'identifiant valide dans le cache. Le slot connecté à ce signal doit remplir les informations d'identification pour le proxy proxy dans l'objet authenticator.

QNetworkAccessManager L'objet mettra en cache les informations d'identification en interne. La prochaine fois que le proxy demandera l'authentification, QNetworkAccessManager enverra automatiquement les mêmes informations d'identification sans émettre à nouveau le signal proxyAuthenticationRequired.

Si le proxy rejette les informations d'identification, QNetworkAccessManager émettra à nouveau le signal.

Voir aussi proxy(), setProxy() et authenticationRequired().

QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const

Renvoie la fabrique de mandataires que cet objet QNetworkAccessManager utilise pour déterminer les mandataires à utiliser pour les demandes.

Notez que le pointeur renvoyé par cette fonction est géré par QNetworkAccessManager et peut être supprimé à tout moment.

Voir aussi setProxyFactory() et proxy().

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)

Charge le contenu de data vers la destination request et renvoie un nouvel objet QNetworkReply qui sera ouvert pour la réponse.

data Le contenu de l'objet doit être ouvert à la lecture lorsque cette fonction est appelée et doit rester valide jusqu'à ce que le signal finished() soit émis pour cette réponse.

La possibilité de lire l'objet renvoyé dépend du protocole. Pour HTTP, le serveur peut envoyer une petite page HTML indiquant que le téléchargement a réussi (ou non). D'autres protocoles auront probablement du contenu dans leurs réponses.

Remarque : pour HTTP, cette requête enverra une requête PUT, que la plupart des serveurs n'autorisent pas. Les mécanismes de téléchargement de formulaires, y compris le téléchargement de fichiers au moyen de formulaires HTML, utilisent le mécanisme POST.

Voir également get(), post(), deleteResource() et sendCustomRequest().

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)

Envoie le contenu du message multiPart à la destination spécifiée par request.

Cette fonction peut être utilisée pour l'envoi de messages MIME multipartites via HTTP.

Il s'agit d'une fonction surchargée.

Voir aussi QHttpMultiPart, QHttpPart, et post().

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)

Envoie le contenu du tableau d'octets data à la destination spécifiée par request.

Il s'agit d'une fonction surchargée.

[since 6.8] QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, std::nullptr_t nptr)

Envoie la requête PUT spécifiée par request sans corps et renvoie un nouvel objet QNetworkReply.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.8.

QNetworkRequest::RedirectPolicy QNetworkAccessManager::redirectPolicy() const

Renvoie la politique de redirection utilisée lors de la création de nouvelles requêtes.

Voir aussi setRedirectPolicy() et QNetworkRequest::RedirectPolicy.

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)

Envoie une requête personnalisée au serveur identifié par l'URL request.

Il incombe à l'utilisateur d'envoyer au serveur une adresse verb valide conformément à la spécification HTTP.

Cette méthode permet d'envoyer des verbes autres que les verbes courants fournis par get() ou post() etc., par exemple en envoyant une commande HTTP OPTIONS.

Si data n'est pas vide, le contenu du périphérique data sera téléchargé vers le serveur ; dans ce cas, les données doivent être ouvertes à la lecture et rester valides jusqu'à ce que le signal finished() soit émis pour cette réponse.

Remarque : cette fonction n'est actuellement disponible que pour HTTP(S).

Voir également get(), post(), put() et deleteResource().

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)

Envoi d'une requête personnalisée au serveur identifié par l'URL request.

Envoie le contenu du message multiPart à la destination spécifiée par request.

Cette fonction peut être utilisée pour envoyer des messages MIME multipartites pour des verbes personnalisés.

Il s'agit d'une fonction surchargée.

Voir aussi QHttpMultiPart, QHttpPart, et put().

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)

Envoie le contenu du tableau d'octets data à la destination spécifiée par request.

Il s'agit d'une fonction surchargée.

void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)

Active ou désactive la suppression automatique de QNetworkReplies.

Définir shouldAutoDelete à true revient à définir l'attribut QNetworkRequest::AutoDeleteReplyOnFinishAttribute à true sur tous les futurs QNetworkRequests transmis à cette instance de QNetworkAccessManager, à moins que l'attribut n'ait déjà été explicitement défini sur QNetworkRequest.

Voir également autoDeleteReplies et QNetworkRequest::AutoDeleteReplyOnFinishAttribute.

void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)

Définit le cache réseau du gestionnaire à l'adresse cache spécifiée. Le cache est utilisé pour toutes les requêtes envoyées par le gestionnaire.

Utilisez cette fonction pour définir l'objet cache réseau dans une classe qui met en œuvre des fonctionnalités supplémentaires, comme l'enregistrement des cookies dans un stockage permanent.

Remarque : QNetworkAccessManager est propriétaire de l'objet cache.

QNetworkAccessManager Par défaut, Qt n'a pas de cache défini. Qt XML fournit un cache disque simple, QNetworkDiskCache, qui peut être utilisé.

Voir aussi cache() et QNetworkRequest::CacheLoadControl.

void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)

Définit la boîte à biscuits du gestionnaire à l'adresse cookieJar spécifiée. La boîte à cookies est utilisée par toutes les requêtes envoyées par le gestionnaire.

Utilisez cette fonction pour définir l'objet cookie jar dans une classe qui implémente des fonctionnalités supplémentaires, comme l'enregistrement des cookies dans une mémoire permanente.

Remarque : QNetworkAccessManager est propriétaire de l'objet cookieJar.

Si cookieJar se trouve dans le même thread que QNetworkAccessManager, il définira le parent de cookieJar de sorte que la boîte à cookies soit supprimée lorsque cet objet est également supprimé. Si vous souhaitez partager des boîtes à cookies entre différents objets QNetworkAccessManager, vous pouvez définir le parent de la boîte à cookies sur 0 après avoir appelé cette fonction.

QNetworkAccessManager Par défaut, le serveur ne met pas en œuvre sa propre politique en matière de cookies : il accepte tous les cookies envoyés par le serveur, pour autant qu'ils soient bien formés et répondent aux exigences minimales de sécurité (le domaine du cookie correspond à celui de la demande et le chemin du cookie correspond à celui de la demande). Pour mettre en œuvre votre propre politique de sécurité, remplacez les fonctions virtuelles QNetworkCookieJar::cookiesForUrl() et QNetworkCookieJar::setCookiesFromUrl(). Ces fonctions sont appelées par QNetworkAccessManager lorsqu'il détecte un nouveau cookie.

Voir aussi cookieJar(), QNetworkCookieJar::cookiesForUrl() et QNetworkCookieJar::setCookiesFromUrl().

void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)

Définit le proxy à utiliser dans les futures demandes à proxy. Cela n'affecte pas les demandes qui ont déjà été envoyées. Le signal proxyAuthenticationRequired() sera émis si le proxy demande une authentification.

Un proxy défini avec cette fonction sera utilisé pour toutes les demandes émises par QNetworkAccessManager. Dans certains cas, il peut être nécessaire de sélectionner différents mandataires en fonction du type de demande envoyée ou de l'hôte de destination. Dans ce cas, vous devriez envisager d'utiliser setProxyFactory().

Voir également proxy() et proxyAuthenticationRequired().

void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)

Définit la fabrique de proxy pour cette classe à factory. Une fabrique de proxy est utilisée pour déterminer une liste plus spécifique de proxies à utiliser pour une requête donnée, au lieu d'essayer d'utiliser la même valeur de proxy pour toutes les requêtes.

Toutes les requêtes envoyées par QNetworkAccessManager seront de type QNetworkProxyQuery::UrlRequest.

Par exemple, une usine à proxy pourrait appliquer les règles suivantes :

  • si l'adresse cible se trouve dans le réseau local (par exemple, si le nom d'hôte ne contient pas de points ou s'il s'agit d'une adresse IP dans la plage de l'organisation), retourner QNetworkProxy::NoProxy
  • si la requête est FTP, retourner un proxy FTP
  • si la requête est HTTP ou HTTPS, retourner un proxy HTTP
  • sinon, retourner un serveur mandataire SOCKSv5

La durée de vie de l'objet factory sera gérée par QNetworkAccessManager. Il supprimera l'objet si nécessaire.

Note : Si un proxy spécifique est défini avec setProxy(), la fabrique ne sera pas utilisée.

Voir aussi proxyFactory(), setProxy() et QNetworkProxyQuery.

void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)

Définit la politique de redirection du gestionnaire à l'adresse policy spécifiée. Cette politique affectera toutes les demandes ultérieures créées par le gestionnaire.

Cette fonction permet d'activer ou de désactiver les redirections HTTP au niveau du gestionnaire.

Remarque : lors de la création d'une requête, QNetworkRequest::RedirectAttributePolicy a la priorité la plus élevée, suivie par la politique du gestionnaire.

La valeur par défaut est QNetworkRequest::NoLessSafeRedirectPolicy. Les clients qui utilisent une gestion manuelle des redirections sont encouragés à définir explicitement cette politique dans leur code.

Voir aussi redirectPolicy() et QNetworkRequest::RedirectPolicy.

void QNetworkAccessManager::setStrictTransportSecurityEnabled(bool enabled)

Si enabled est true, QNetworkAccessManager suit la politique HTTP Strict Transport Security (HSTS, RFC6797). Lors du traitement d'une requête, QNetworkAccessManager remplace automatiquement le schéma "http" par "https" et utilise un transport sécurisé pour les hôtes HSTS. S'il est défini explicitement, le port 80 est remplacé par le port 443.

Lorsque HSTS est activé, pour chaque réponse HTTP contenant l'en-tête HSTS et reçue via un transport sécurisé, QNetworkAccessManager met à jour son cache HSTS, soit en se souvenant d'un hôte avec une politique valide, soit en supprimant un hôte avec une politique HSTS expirée ou désactivée.

Voir aussi isStrictTransportSecurityEnabled().

void QNetworkAccessManager::setTransferTimeout(int timeout)

Définit timeout comme délai de transfert en millisecondes.

Voir aussi setTransferTimeout(std::chrono::millisecondes), transferTimeout(), et transferTimeoutAsDuration().

[since 6.7] void QNetworkAccessManager::setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)

Définit le délai d'attente duration pour interrompre le transfert si aucune donnée n'est échangée.

Les transferts sont interrompus si aucun octet n'est transféré avant l'expiration du délai. Zéro signifie qu'aucun délai n'est défini. Si aucun argument n'est fourni, le délai d'attente est QNetworkRequest::DefaultTransferTimeout. Si cette fonction n'est pas appelée, le délai d'attente est désactivé et prend la valeur zéro. Les délais d'attente non nuls spécifiques aux demandes qui sont exécutées remplacent cette valeur. Cela signifie que si QNetworkAccessManager a un délai d'attente activé, il doit être désactivé pour exécuter une requête sans délai d'attente.

Cette fonction a été introduite dans Qt 6.7.

Voir aussi transferTimeoutAsDuration().

[signal] void QNetworkAccessManager::sslErrors(QNetworkReply *reply, 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 et reply est le QNetworkReply qui rencontre ces erreurs.

Pour indiquer que les erreurs ne sont pas fatales et que la connexion doit se poursuivre, la fonction QNetworkReply::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, le slot doit appeler ignoreSslErrors().

Voir aussi QSslSocket::sslErrors(), QNetworkReply::sslErrors(), QNetworkReply::sslConfiguration(), et QNetworkReply::ignoreSslErrors().

QList<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const

Renvoie la liste des politiques HTTP Strict Transport Security. Cette liste peut être différente de celle initialement définie via addStrictTransportSecurityHosts() si le cache HSTS a été mis à jour à partir d'un en-tête de réponse "Strict-Transport-Security".

Voir aussi addStrictTransportSecurityHosts() et QHstsPolicy.

[virtual] QStringList QNetworkAccessManager::supportedSchemes() const

Liste tous les schémas d'URL pris en charge par le gestionnaire d'accès.

Réimplémentez cette méthode pour fournir vos propres schémas pris en charge dans une sous-classe de QNetworkAccessManager. C'est par exemple nécessaire lorsque votre sous-classe prend en charge de nouveaux protocoles.

int QNetworkAccessManager::transferTimeout() const

Renvoie le délai d'attente utilisé pour les transferts, en millisecondes.

Voir aussi setTransferTimeout().

[since 6.7] std::chrono::milliseconds QNetworkAccessManager::transferTimeoutAsDuration() const

Renvoie le délai d'attente après lequel le transfert est interrompu si aucune donnée n'est échangée.

La durée par défaut est zéro, ce qui signifie que le délai d'attente n'est pas utilisé.

Cette fonction a été introduite dans Qt 6.7.

Voir aussi setTransferTimeout(std::chrono::millisecondes).

© 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.