QNetworkProxy Class
La classe QNetworkProxy fournit un proxy de couche réseau. En savoir plus...
| En-tête : | #include <QNetworkProxy> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
- Liste de tous les membres, y compris les membres hérités
- QNetworkProxy fait partie de l'API de programmation réseau et des classes partagées implicitement.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| flags | Capabilities |
| enum | Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability } |
| enum | ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy } |
Fonctions publiques
| QNetworkProxy() | |
| QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString()) | |
| QNetworkProxy(const QNetworkProxy &other) | |
| ~QNetworkProxy() | |
| QNetworkProxy::Capabilities | capabilities() const |
| bool | hasRawHeader(const QByteArray &headerName) const |
| QVariant | header(QNetworkRequest::KnownHeaders header) const |
(since 6.8) QHttpHeaders | headers() const |
| QString | hostName() const |
| bool | isCachingProxy() const |
| bool | isTransparentProxy() const |
| QString | password() const |
| quint16 | port() const |
| QByteArray | rawHeader(const QByteArray &headerName) const |
| QList<QByteArray> | rawHeaderList() const |
| void | setCapabilities(QNetworkProxy::Capabilities capabilities) |
| void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) |
(since 6.8) void | setHeaders(QHttpHeaders &&newHeaders) |
(since 6.8) void | setHeaders(const QHttpHeaders &newHeaders) |
| void | setHostName(const QString &hostName) |
| void | setPassword(const QString &password) |
| void | setPort(quint16 port) |
| void | setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) |
| void | setType(QNetworkProxy::ProxyType type) |
| void | setUser(const QString &user) |
| void | swap(QNetworkProxy &other) |
| QNetworkProxy::ProxyType | type() const |
| QString | user() const |
| bool | operator!=(const QNetworkProxy &other) const |
| QNetworkProxy & | operator=(const QNetworkProxy &other) |
| bool | operator==(const QNetworkProxy &other) const |
Membres publics statiques
| QNetworkProxy | applicationProxy() |
| void | setApplicationProxy(const QNetworkProxy &networkProxy) |
Description détaillée
QNetworkProxy fournit la méthode permettant de configurer la prise en charge d'un proxy au niveau de la couche réseau pour les classes réseau Qt. Les classes actuellement prises en charge sont QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServer et QNetworkAccessManager. La prise en charge du proxy est conçue pour être aussi transparente que possible. Cela signifie que les applications existantes que vous avez écrites et qui sont compatibles avec le réseau devraient automatiquement prendre en charge le proxy réseau à l'aide du code suivant.
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(1080);
proxy.setUser("username");
proxy.setPassword("password");
QNetworkProxy::setApplicationProxy(proxy);Au lieu de configurer un proxy à l’échelle de l’application, vous pouvez spécifier le proxy pour chaque socket individuellement à l’aide des fonctions ` QAbstractSocket::setProxy()` et ` QTcpServer::setProxy()`. De cette manière, il est possible de désactiver l’utilisation d’un proxy pour des sockets spécifiques à l’aide du code suivant :
serverSocket->setProxy(QNetworkProxy::NoProxy);Le proxy réseau n’est pas utilisé si l’adresse utilisée dans connectToHost(), bind() ou listen() est équivalente à QHostAddress::LocalHost ou QHostAddress::LocalHostIPv6.
Chaque type de prise en charge de proxy est soumis à certaines restrictions. Vous devez lire attentivement la documentation relative à ProxyType avant de choisir le type de proxy à utiliser.
Remarque : les modifications apportées aux sockets actuellement connectées ne prennent pas effet. Si vous devez modifier un socket connecté, vous devez le reconnecter.
SOCKS5
La prise en charge de SOCKS5 depuis Qt 4 repose sur les normes RFC 1928 et RFC 1929. Les méthodes d'authentification prises en charge sont l'absence d'authentification et l'authentification par nom d'utilisateur/mot de passe. Les protocoles IPv4 et IPv6 sont tous deux pris en charge. Les noms de domaine sont résolus via le serveur SOCKS5 si l’option « QNetworkProxy::HostNameLookupCapability » est activée ; sinon, ils sont résolus localement et l’adresse IP est envoyée au serveur. Il y a plusieurs points à retenir lors de l’utilisation de SOCKS5 avec QUdpSocket et QTcpServer:
Avec QUdpSocket, un appel à bind() peut échouer avec une erreur de délai d’expiration. Si un numéro de port autre que 0 est transmis à bind(), il n’est pas garanti que ce soit le port spécifié qui soit utilisé. Utilisez localPort() et localAddress() pour obtenir l’adresse et le numéro de port réellement utilisés. Le protocole UDP par proxy passant par deux connexions UDP, les paquets sont plus susceptibles d’être perdus.
Avec QTcpServer, un appel à listen() peut échouer avec une erreur de délai d’attente. Si un numéro de port autre que 0 est transmis à listen(), il n’est pas garanti que ce soit le port spécifié qui soit utilisé. Utilisez serverPort() et serverAddress() pour obtenir l’adresse et le port réels utilisés pour écouter les connexions. SOCKS5 ne prend en charge qu’une seule connexion acceptée par appel à ` listen()`, et chaque appel est susceptible d’entraîner l’utilisation d’un ` serverPort()` différent.
Voir également QAbstractSocket et QTcpServer.
Documentation sur les types de membres
enum QNetworkProxy::Capability
flags QNetworkProxy::Capabilities
Ces indicateurs précisent les fonctionnalités prises en charge par un serveur proxy donné.
QNetworkProxy Définit différentes fonctionnalités par défaut lors de la création de l’objet (voir QNetworkProxy::ProxyType pour la liste des valeurs par défaut). Il est toutefois possible de modifier ces fonctionnalités après la création de l’objet à l’aide de la fonction setCapabilities().
Les fonctionnalités prises en charge par QNetworkProxy sont les suivantes :
| Constante | Valeur | Description |
|---|---|---|
QNetworkProxy::TunnelingCapability | 0x0001 | Capacité à ouvrir des connexions TCP transparentes et tunnelisées vers un hôte distant. Le serveur proxy relaie la transmission à l'identique d’un côté à l’autre et n’effectue aucune mise en cache. |
QNetworkProxy::ListeningCapability | 0x0002 | Possibilité de créer un socket d’écoute et d’attendre une connexion TCP entrante provenant d’un hôte distant. |
QNetworkProxy::UdpTunnelingCapability | 0x0004 | Capacité à relayer des datagrammes UDP via le serveur proxy vers et depuis un hôte distant. |
QNetworkProxy::CachingCapability | 0x0008 | Capacité à mettre en cache le contenu du transfert. Cette fonctionnalité est spécifique à chaque protocole et à chaque type de proxy. Par exemple, les proxys HTTP peuvent mettre en cache le contenu des données Web transférées à l’aide de commandes « GET ». |
QNetworkProxy::HostNameLookupCapability | 0x0010 | Capacité à effectuer la recherche d’un nom d’hôte distant et à s’y connecter, plutôt que d’exiger que l’application effectue elle-même la recherche de nom et demande une connexion uniquement vers des adresses IP. |
QNetworkProxy::SctpTunnelingCapability | 0x00020 | Capacité à ouvrir des connexions SCTP transparentes et en tunnel vers un hôte distant. |
QNetworkProxy::SctpListeningCapability | 0x00040 | Capacité à créer un socket d’écoute et à attendre une connexion SCTP entrante provenant d’un hôte distant. |
Le type `Capabilities` est un `typedef` pour ` QFlags<Capability>`. Il stocke une combinaison OU de valeurs `Capability`.
enum QNetworkProxy::ProxyType
Cette énumération décrit les types de proxys réseau pris en charge par Qt Network.
Qt prend en charge deux types de proxys : les proxys transparents et les proxys avec mise en cache. Le premier groupe comprend les proxys capables de gérer n'importe quel transfert de données, tandis que le second ne peut traiter que des requêtes spécifiques. Les proxys avec mise en cache ne sont pertinents que pour les classes spécifiques dans lesquelles ils peuvent être utilisés.
| Constante | Valeur | Description |
|---|---|---|
QNetworkProxy::NoProxy | 2 | Aucun proxy n'est utilisé |
QNetworkProxy::DefaultProxy | 0 | Le proxy est déterminé en fonction du proxy d'application défini via ` setApplicationProxy()` |
QNetworkProxy::Socks5Proxy | 1 | Socks5 Le proxy est utilisé |
QNetworkProxy::HttpProxy | 3 | Le proxy HTTP transparent est utilisé |
QNetworkProxy::HttpCachingProxy | 4 | Proxy uniquement pour les requêtes HTTP |
QNetworkProxy::FtpCachingProxy | 5 | Proxy uniquement pour les requêtes FTP |
Le tableau ci-dessous répertorie les différents types de proxy et leurs fonctionnalités. Chaque type de proxy présentant des fonctionnalités différentes, il est important de bien les comprendre avant de choisir un type de proxy.
| Type de proxy | Description | Fonctionnalités par défaut |
|---|---|---|
| SOCKS 5 | Proxy générique adapté à tout type de connexion. Prend en charge les protocoles TCP et UDP, la liaison à un port (connexions entrantes) et l’authentification. | TunnelingCapability, ListeningCapability, UdpTunnelingCapability, HostNameLookupCapability |
| HTTP | Mis en œuvre à l'aide de la commande « CONNECT », prend en charge uniquement les connexions TCP sortantes ; prend en charge l'authentification. | TunnelingCapability, CachingCapability, HostNameLookupCapability |
| HTTP en mise en cache uniquement | Mis en œuvre à l’aide de commandes HTTP standard, il n’est utile que dans le cadre de requêtes HTTP (voir QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
| FTP avec mise en cache | Mis en œuvre à l'aide d'un proxy FTP, il n'est utile que dans le cadre de requêtes FTP (voir QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
Notez également que vous ne devez pas configurer le proxy par défaut de l’application (setApplicationProxy()) sur un proxy ne disposant pas de la fonctionnalité « TunnelingCapability ». Si vous le faites, QTcpSocket ne saura pas comment établir des connexions.
Voir également setType(), type(), capabilities() et setCapabilities().
Documentation sur les fonctions membres
QNetworkProxy::QNetworkProxy()
Crée un objet `QNetworkProxy` de type ` DefaultProxy `.
Le type de proxy est déterminé par la fonction applicationProxy(), dont la valeur par défaut est NoProxy ou un proxy système si celui-ci est configuré.
Voir également setType() et setApplicationProxy().
QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
Crée un objet `QNetworkProxy` avec les paramètres suivants : ` type`, ` hostName`, ` port`, ` user ` et ` password`.
Les capacités par défaut pour le type de proxy type sont définies automatiquement.
Voir également capabilities().
QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)
Crée une copie de other.
[noexcept] QNetworkProxy::~QNetworkProxy()
Supprime l'objet « QNetworkProxy ».
[static] QNetworkProxy QNetworkProxy::applicationProxy()
Renvoie le proxy réseau au niveau de l'application.
Si une instance de ` QAbstractSocket ` ou ` QTcpSocket ` est de type ` QNetworkProxy::DefaultProxy `, alors l'objet ` QNetworkProxy ` renvoyé par cette fonction est utilisé.
Voir également QNetworkProxyFactory, setApplicationProxy(), QAbstractSocket::proxy() et QTcpServer::proxy().
QNetworkProxy::Capabilities QNetworkProxy::capabilities() const
Renvoie les capacités de ce serveur proxy.
Voir également setCapabilities() et type().
bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const
Renvoie true si l'en-tête brut headerName est utilisé pour ce proxy. Renvoie false si le proxy n'est pas de type HttpProxy ou HttpCachingProxy.
Voir également rawHeader() et setRawHeader().
QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const
Renvoie la valeur de l'en-tête réseau connu header s'il est utilisé pour ce proxy. S'il n'est pas présent, renvoie QVariant() (c'est-à-dire un variant non valide).
Voir également QNetworkRequest::KnownHeaders, rawHeader() et setHeader().
[since 6.8] QHttpHeaders QNetworkProxy::headers() const
Renvoie les en-têtes définis dans cette requête réseau.
Si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, un objet QHttpHeaders construit par défaut est renvoyé.
Cette fonction a été introduite dans Qt 6.8.
Voir également setHeaders().
QString QNetworkProxy::hostName() const
Renvoie le nom d'hôte du serveur proxy.
Voir également setHostName(), setPort() et port().
bool QNetworkProxy::isCachingProxy() const
Renvoie « true » si ce proxy prend en charge la fonctionnalité « QNetworkProxy::CachingCapability ».
Dans Qt 4.4, cette fonctionnalité était liée au type de proxy, mais depuis Qt 4.5, il est possible de désactiver la mise en cache d'un proxy en appelant la fonction setCapabilities().
Voir également capabilities(), type() et isTransparentProxy().
bool QNetworkProxy::isTransparentProxy() const
Renvoie « true » si ce proxy prend en charge le tunneling transparent des connexions TCP. Cela correspond à la fonctionnalité « QNetworkProxy::TunnelingCapability ».
Dans Qt 4.4, cette fonctionnalité était liée au type de proxy, mais depuis Qt 4.5, il est possible de désactiver la mise en cache d’un proxy en appelant setCapabilities().
Voir également capabilities(), type() et isCachingProxy().
QString QNetworkProxy::password() const
Renvoie le mot de passe utilisé pour l'authentification.
Voir également user(), setPassword() et setUser().
quint16 QNetworkProxy::port() const
Renvoie le port de l'hôte proxy.
Voir également setHostName(), setPort() et hostName().
QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const
Renvoie la forme brute de l'en-tête headerName. Si cet en-tête n'existe pas ou si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, un QByteArray vide est renvoyé, ce qui peut être impossible à distinguer d'un en-tête présent mais sans contenu (utilisez hasRawHeader() pour vérifier si l'en-tête existe ou non).
Les en-têtes bruts peuvent être définis à l’aide de setRawHeader() ou de setHeader().
Voir également header() et setRawHeader().
QList<QByteArray> QNetworkProxy::rawHeaderList() const
Renvoie une liste de tous les en-têtes bruts définis dans ce proxy réseau. La liste est classée dans l'ordre dans lequel les en-têtes ont été définis.
Si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, une liste vide QList est renvoyée.
Voir également hasRawHeader() et rawHeader().
[static] void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)
Définit le proxy réseau au niveau de l'application sur « networkProxy ».
Si un objet ` QAbstractSocket ` ou ` QTcpSocket ` est de type ` QNetworkProxy::DefaultProxy `, c'est alors le ` QNetworkProxy ` défini par cette fonction qui est utilisé. Si vous souhaitez davantage de flexibilité pour déterminer le proxy à utiliser, utilisez la classe ` QNetworkProxyFactory `.
La définition d’une valeur de proxy par défaut à l’aide de cette fonction remplacera la fabrique de proxy de l’application définie avec QNetworkProxyFactory::setApplicationProxyFactory et désactivera l’utilisation d’un proxy système.
Voir également QNetworkProxyFactory, applicationProxy(), QAbstractSocket::setProxy() et QTcpServer::setProxy().
void QNetworkProxy::setCapabilities(QNetworkProxy::Capabilities capabilities)
Définit les capacités de ce proxy sur « capabilities ».
Voir également setType() et capabilities().
void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Définit la valeur de l'en-tête connu « header » sur « value », en remplaçant tout en-tête précédemment défini. Cette opération définit également l'en-tête HTTP brut équivalent.
Si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, cette opération n'a aucun effet.
Voir également QNetworkRequest::KnownHeaders, setRawHeader() et header().
[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)
Définit les en-têtes suivants : newHeaders dans cette requête 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, leurs valeurs seront analysées et le formulaire analysé correspondant sera également défini.
Si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, cela n'a aucun effet.
Cette fonction a été introduite dans Qt 6.8.
Voir également headers() et QNetworkRequest::KnownHeaders.
[since 6.8] void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.8.
void QNetworkProxy::setHostName(const QString &hostName)
Définit le nom d'hôte du serveur proxy sur hostName.
Voir également hostName(), setPort() et port().
void QNetworkProxy::setPassword(const QString &password)
Définit le mot de passe pour l'authentification par proxy sur password.
Voir également user(), setUser() et password().
void QNetworkProxy::setPort(quint16 port)
Définit le port de l'hôte proxy sur port.
Voir également hostName(), setHostName() et port().
void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
Définit l'headerName d'en-tête sur la valeur headerValue. Si headerName correspond à un en-tête connu (voir QNetworkRequest::KnownHeaders), le format brut sera analysé et l'en-tête « préparé » correspondant sera également défini.
Par exemple :
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));définira également l’en-tête connu LastModifiedHeader sur l’objet QDateTime de la date analysée.
Remarque : définir deux fois le même en-tête remplace la définition précédente. Pour obtenir le comportement souhaité avec plusieurs en-têtes HTTP portant le même nom, vous devez concaténer les deux valeurs en les séparant par une virgule (« , ») et définir un seul en-tête brut.
Si le proxy n’est pas de type HttpProxy ou HttpCachingProxy, cela n’a aucun effet.
Voir également QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader() et rawHeader().
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
Définit le type de proxy de cette instance sur « type ».
Notez que la modification du type d'un proxy ne modifie pas l'ensemble des capacités détenues par cet objet ` QNetworkProxy ` si des capacités ont été définies à l'aide de la fonction ` setCapabilities()`.
Voir également type() et setCapabilities().
void QNetworkProxy::setUser(const QString &user)
Définit le nom d'utilisateur pour l'authentification par proxy sur user.
Voir également user(), setPassword() et password().
[noexcept] void QNetworkProxy::swap(QNetworkProxy &other)
Remplace cette instance de proxy réseau par other. Cette opération est très rapide et ne rencontre jamais d'échec.
QNetworkProxy::ProxyType QNetworkProxy::type() const
Renvoie le type de proxy associé à cette instance.
Voir aussi setType().
QString QNetworkProxy::user() const
Renvoie le nom d'utilisateur utilisé pour l'authentification.
Voir également setUser(), setPassword() et password().
bool QNetworkProxy::operator!=(const QNetworkProxy &other) const
Compare la valeur de ce proxy réseau à celle de other et renvoie true si elles diffèrent.
QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
Attribue à ce proxy réseau la valeur de l’ other.
bool QNetworkProxy::operator==(const QNetworkProxy &other) const
Compare la valeur de ce proxy réseau à celle de other et renvoie true si elles sont identiques (même type de proxy, même serveur, ainsi que le même nom d'utilisateur et le même mot de passe).
© 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.