QNetworkProxy Class
La classe QNetworkProxy fournit un proxy de couche réseau. Plus d'informations...
| 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 Network Programming API et de Implicitly Shared Classes.
Note : 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 du proxy de la couche réseau pour les classes de réseau de 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 réseau existantes que vous avez écrites 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);
Une alternative à la mise en place d'un proxy à l'échelle de l'application consiste à spécifier le proxy pour des sockets individuels à l'aide de 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 en utilisant le 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 support proxy est associé à certaines restrictions. Il est conseillé de lire attentivement la documentation de ProxyType avant de choisir un type de proxy à utiliser.
Remarque : les modifications apportées aux sockets actuellement connectées ne sont pas prises en compte. Si vous devez modifier un socket connecté, vous devez le reconnecter.
SOCKS5
La prise en charge de SOCKS5 depuis Qt 4 est basée sur les 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 pris en charge. Les noms de domaine sont résolus par le serveur SOCKS5 si l'adresse QNetworkProxy::HostNameLookupCapability est activée, sinon ils sont résolus localement et l'adresse IP est envoyée au serveur. Il y a plusieurs choses à retenir lors de l'utilisation de SOCKS5 avec QUdpSocket et QTcpServer:
Avec QUdpSocket, un appel à bind() peut échouer avec une erreur de dépassement de délai. Si un numéro de port différent de 0 est transmis à bind(), il n'est pas garanti que c'est le port spécifié qui sera utilisé. Utilisez localPort() et localAddress() pour obtenir l'adresse et le numéro de port réellement utilisés. Comme l'UDP mandataire passe par deux connexions UDP, il est plus probable que des paquets soient abandonnés.
Avec QTcpServer, un appel à listen() peut échouer avec une erreur de dépassement de délai. Si un numéro de port différent de 0 est transmis à listen(), il n'est pas garanti que c'est le port spécifié qui sera 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 drapeaux indiquent les capacités prises en charge par un serveur proxy donné.
QNetworkProxy QNetworkProxy::Capabilities définit différentes capacités par défaut lors de la création de l'objet (voir QNetworkProxy::ProxyType pour une liste des valeurs par défaut). Il est toutefois possible de modifier les capacités après la création de l'objet à l'aide de setCapabilities().
Les capacités prises en charge par QNetworkProxy sont les suivantes :
| Constante | Valeur | Description de l'objet |
|---|---|---|
QNetworkProxy::TunnelingCapability | 0x0001 | Capacité d'ouvrir des connexions TCP transparentes et tunnelisées vers un hôte distant. Le serveur mandataire relaie la transmission mot pour mot d'un côté à l'autre et ne fait pas de mise en cache. |
QNetworkProxy::ListeningCapability | 0x0002 | Possibilité de créer un socket d'écoute et d'attendre une connexion TCP entrante en provenance d'un hôte distant. |
QNetworkProxy::UdpTunnelingCapability | 0x0004 | Possibilité de relayer des datagrammes UDP via le serveur mandataire en provenance et à destination d'un hôte distant. |
QNetworkProxy::CachingCapability | 0x0008 | Possibilité de mettre en cache le contenu du transfert. Cette capacité est spécifique à chaque protocole et à chaque type de serveur mandataire. Par exemple, les serveurs mandataires HTTP peuvent mettre en cache le contenu des données web transférées avec des commandes "GET". |
QNetworkProxy::HostNameLookupCapability | 0x0010 | Possibilité de se connecter à un nom d'hôte distant et de s'y connecter, au lieu de demander à l'application d'effectuer la recherche de nom et de demander une connexion à des adresses IP uniquement. |
QNetworkProxy::SctpTunnelingCapability | 0x00020 | Possibilité d'ouvrir des connexions SCTP transparentes et tunnelisées vers un hôte distant. |
QNetworkProxy::SctpListeningCapability | 0x00040 | Possibilité de créer une socket d'écoute et d'attendre une connexion SCTP entrante en provenance d'un hôte distant. |
Le type Capacités est un typedef pour QFlags<Capacité>. Il stocke une combinaison OU de valeurs de capacités.
enum QNetworkProxy::ProxyType
Cette énumération décrit les types de mandataires réseau fournis par Qt Network.
Qt comprend deux types de mandataires : les mandataires transparents et les mandataires de mise en cache. Le premier groupe se compose de mandataires qui peuvent gérer n'importe quel transfert de données arbitraire, tandis que le second ne peut gérer que des demandes spécifiques. Les mandataires de mise en cache n'ont de sens que pour les classes spécifiques dans lesquelles ils peuvent être utilisés.
| Constante | Valeur | Description de la constante |
|---|---|---|
QNetworkProxy::NoProxy | 2 | Aucune procuration n'est utilisée |
QNetworkProxy::DefaultProxy | 0 | Le proxy est déterminé en fonction du proxy d'application défini à l'aide de setApplicationProxy() |
QNetworkProxy::Socks5Proxy | 1 | Socks5 Le proxy est utilisé |
QNetworkProxy::HttpProxy | 3 | Le proxy transparent HTTP est utilisé |
QNetworkProxy::HttpCachingProxy | 4 | Proxy pour les requêtes HTTP uniquement |
QNetworkProxy::FtpCachingProxy | 5 | Proxy pour les requêtes FTP uniquement |
Le tableau ci-dessous répertorie les différents types de proxy et leurs capacités. Chaque type de proxy ayant des capacités différentes, il est important de les comprendre avant de choisir un type de proxy.
| Type de proxy | Description du type de proxy | Capacités par défaut |
|---|---|---|
| SOCKS 5 | Proxy générique pour tout type de connexion. Prend en charge TCP, 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 avec mise en cache uniquement | Mis en œuvre à l'aide des commandes HTTP normales, il n'est utile que dans le contexte des requêtes HTTP (voir QNetworkAccessManager). | CachingCapability, HostNameLookupCapability |
| Mise en cache FTP | Mis en œuvre à l'aide d'un proxy FTP, il n'est utile que dans le contexte des requêtes FTP (voir QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
Notez également que vous ne devez pas définir le proxy par défaut de l'application (setApplicationProxy()) sur un proxy qui n'a pas la capacité TunnelingCapability. Si vous le faites, QTcpSocket ne saura pas comment ouvrir des connexions.
Voir aussi setType(), type(), capabilities(), et setCapabilities().
Documentation des fonctions membres
QNetworkProxy::QNetworkProxy()
Construit un QNetworkProxy avec le type DefaultProxy.
Le type de proxy est déterminé par applicationProxy(), qui prend par défaut la valeur NoProxy ou un proxy système s'il est configuré.
Voir aussi setType() et setApplicationProxy().
QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
Construit un QNetworkProxy avec type, hostName, port, user et password.
Les capacités par défaut du type de proxy type sont définies automatiquement.
Voir aussi capabilities().
QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)
Construit une copie de other.
[noexcept] QNetworkProxy::~QNetworkProxy()
Détruit l'objet QNetworkProxy.
[static] QNetworkProxy QNetworkProxy::applicationProxy()
Renvoie le proxy réseau au niveau de l'application.
Si un QAbstractSocket ou un QTcpSocket a le type QNetworkProxy::DefaultProxy, le QNetworkProxy renvoyé par cette fonction est utilisé.
Voir aussi QNetworkProxyFactory, setApplicationProxy(), QAbstractSocket::proxy() et QTcpServer::proxy().
QNetworkProxy::Capabilities QNetworkProxy::capabilities() const
Renvoie les capacités de ce serveur proxy.
Voir aussi setCapabilities() et type().
bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const
Renvoie true si l'en-tête brut headerName est utilisé pour ce proxy. Retourne false si le proxy n'est pas de type HttpProxy ou HttpCachingProxy.
Voir aussi 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, il renvoie QVariant() (c'est-à-dire une variante non valide).
Voir aussi 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, le proxy construit par défaut QHttpHeaders est renvoyé.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi setHeaders().
QString QNetworkProxy::hostName() const
Renvoie le nom d'hôte du serveur mandataire.
Voir aussi setHostName(), setPort(), et port().
bool QNetworkProxy::isCachingProxy() const
Retourne true si ce proxy supporte la capacité QNetworkProxy::CachingCapability.
Dans Qt 4.4, la capacité était liée au type de proxy, mais depuis Qt 4.5, il est possible de supprimer la capacité de mise en cache d'un proxy en appelant setCapabilities().
Voir aussi capabilities(), type(), et isTransparentProxy().
bool QNetworkProxy::isTransparentProxy() const
Renvoie true si ce proxy prend en charge la tunnelisation transparente des connexions TCP. Cela correspond à la capacité de QNetworkProxy::TunnelingCapability.
Dans Qt 4.4, la capacité était liée au type de proxy, mais depuis Qt 4.5, il est possible de supprimer la capacité de mise en cache d'un proxy en appelant setCapabilities().
Voir aussi capabilities(), type(), et isCachingProxy().
QString QNetworkProxy::password() const
Renvoie le mot de passe utilisé pour l'authentification.
Voir aussi user(), setPassword() et setUser().
quint16 QNetworkProxy::port() const
Renvoie le port de l'hôte du proxy.
Voir aussi setHostName(), setPort(), et hostName().
QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const
Renvoie la forme brute de l'en-tête headerName. Si aucun en-tête de ce type n'est présent 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 savoir si l'en-tête existe ou non).
Les en-têtes bruts peuvent être définis avec setRawHeader() ou avec 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 établie dans l'ordre dans lequel les en-têtes ont été définis.
Si le proxy n'est pas de type HttpProxy ou HttpCachingProxy, un QList vide est renvoyé.
Voir aussi hasRawHeader() et rawHeader().
[static] void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)
Définit le proxy réseau au niveau de l'application comme étant networkProxy.
Si un QAbstractSocket ou un QTcpSocket a le type QNetworkProxy::DefaultProxy, c'est le QNetworkProxy défini avec cette fonction qui est utilisé. Si vous souhaitez plus de flexibilité dans la détermination du proxy utilisé, utilisez la classe QNetworkProxyFactory.
La définition d'une valeur de proxy par défaut à l'aide de cette fonction permet de remplacer le proxy d'application défini à l'usine avec QNetworkProxyFactory::setApplicationProxyFactory et de désactiver 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 à capabilities.
Voir aussi setType() et capabilities().
void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Fixe la valeur de l'en-tête connu header à 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 aussi QNetworkRequest::KnownHeaders, setRawHeader(), et header().
[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)
Définit newHeaders en tant qu'en-tête dans cette demande de 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, les valeurs seront analysées et la forme analysée correspondante sera également définie.
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 aussi 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 mandataire à hostName.
Voir aussi hostName(), setPort() et port().
void QNetworkProxy::setPassword(const QString &password)
Définit le mot de passe pour l'authentification par proxy comme étant password.
Voir aussi user(), setUser() et password().
void QNetworkProxy::setPort(quint16 port)
Définit le port de l'hôte proxy à port.
Voir aussi hostName(), setHostName() et port().
void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
Fixe l'en-tête headerName à la valeur headerValue. Si headerName correspond à un en-tête connu (voir QNetworkRequest::KnownHeaders), le format brut sera analysé et l'en-tête "cuit" 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 comme étant l'objet QDateTime de la date analysée.
Remarque : le fait de définir deux fois le même en-tête annule le réglage précédent. Pour obtenir le comportement de plusieurs en-têtes HTTP du 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 aussi QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader(), et rawHeader().
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
Définit le type de proxy pour cette instance à type.
Notez que le fait de modifier le type d'un proxy ne modifie pas l'ensemble des capacités de cet objet QNetworkProxy si des capacités ont été définies à l'aide de setCapabilities().
Voir également type() et setCapabilities().
void QNetworkProxy::setUser(const QString &user)
Définit le nom d'utilisateur pour l'authentification par proxy comme étant user.
Voir aussi 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 n'échoue jamais.
QNetworkProxy::ProxyType QNetworkProxy::type() const
Renvoie le type de proxy pour cette instance.
Voir aussi setType().
QString QNetworkProxy::user() const
Renvoie le nom d'utilisateur utilisé pour l'authentification.
Voir aussi setUser(), setPassword() et password().
bool QNetworkProxy::operator!=(const QNetworkProxy &other) const
Compare la valeur de ce proxy réseau à other et renvoie true en cas de différence.
QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
Attribue la valeur du proxy réseau other à ce proxy réseau.
bool QNetworkProxy::operator==(const QNetworkProxy &other) const
Compare la valeur de ce proxy réseau à other et renvoie true s'ils sont égaux (même type de proxy, même serveur, même nom d'utilisateur et 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.