QNetworkProxy Class
La clase QNetworkProxy proporciona un proxy de capa de red. Más...
| Cabecera: | #include <QNetworkProxy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- Lista de todos los miembros, incluyendo los heredados
- QNetworkProxy es parte de la API de Programación de Redes y Clases Implícitamente Compartidas.
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
| flags | Capabilities |
| enum | Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability } |
| enum | ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy } |
Funciones Públicas
| 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 |
Miembros Públicos Estáticos
| QNetworkProxy | applicationProxy() |
| void | setApplicationProxy(const QNetworkProxy &networkProxy) |
Descripción Detallada
QNetworkProxy proporciona el método para configurar el soporte de proxy de capa de red a las clases de red Qt. Las clases soportadas actualmente son QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServer y QNetworkAccessManager. El soporte proxy está diseñado para ser lo más transparente posible. Esto significa que las aplicaciones de red existentes que hayas escrito deberían soportar automáticamente el proxy de red usando el siguiente código.
QNetworkProxy proxy; proxy.setType(QNetworkProxy::Socks5Proxy); proxy.setHostName("proxy.example.com"); proxy.setPort(1080); proxy.setUser("username"); proxy.setPassword("password"); QNetworkProxy::setApplicationProxy(proxy);
Una alternativa a la configuración de un proxy para toda la aplicación es especificar el proxy para sockets individuales utilizando QAbstractSocket::setProxy() y QTcpServer::setProxy(). De esta forma, es posible deshabilitar el uso de un proxy para sockets específicos utilizando el siguiente código:
serverSocket->setProxy(QNetworkProxy::NoProxy);
El proxy de red no se utiliza si la dirección utilizada en connectToHost(), bind() o listen() es equivalente a QHostAddress::LocalHost o QHostAddress::LocalHostIPv6.
Cada tipo de soporte proxy tiene asociadas ciertas restricciones. Debe leer detenidamente la documentación de ProxyType antes de seleccionar el tipo de proxy que desea utilizar.
Nota: Los cambios realizados en los sockets actualmente conectados no tienen efecto. Si necesitas cambiar un socket conectado, debes reconectarlo.
SOCKS5
El soporte de SOCKS5 desde Qt 4 está basado en RFC 1928 y RFC 1929. Los métodos de autenticación soportados son sin autenticación y autenticación nombre de usuario/contraseña. Se soportan tanto IPv4 como IPv6. Los nombres de dominio se resuelven a través del servidor SOCKS5 si QNetworkProxy::HostNameLookupCapability está habilitado, de lo contrario se resuelven localmente y la dirección IP se envía al servidor. Hay varias cosas que recordar cuando se utiliza SOCKS5 con QUdpSocket y QTcpServer:
Con QUdpSocket, una llamada a bind() puede fallar con un error de tiempo de espera. Si se pasa un número de puerto distinto de 0 a bind(), no se garantiza que sea el puerto especificado el que se utilice. Utilice localPort() y localAddress() para obtener la dirección real y el número de puerto en uso. Debido a que el UDP proxy pasa a través de dos conexiones UDP, es más probable que los paquetes sean descartados.
Con QTcpServer una llamada a listen() puede fallar con un error de tiempo de espera. Si se pasa un número de puerto distinto de 0 a listen(), no se garantiza que sea el puerto especificado el que se utilice. Utilice serverPort() y serverAddress() para obtener la dirección y el puerto reales utilizados para escuchar las conexiones. SOCKS5 sólo admite una conexión aceptada por llamada a listen(), y es probable que en cada llamada se utilice un serverPort() diferente.
Véase también QAbstractSocket y QTcpServer.
Documentación de tipos de miembros
enum QNetworkProxy::Capacidad
flags QNetworkProxy::Capacidades
Estas banderas indican las capacidades que soporta un determinado servidor proxy.
QNetworkProxy establece diferentes capacidades por defecto cuando se crea el objeto (ver QNetworkProxy::ProxyType para una lista de los valores por defecto). Sin embargo, es posible cambiar las capacidades una vez creado el objeto con setCapabilities().
Las capacidades que soporta QNetworkProxy son:
| Constante | Valor | Descripción |
|---|---|---|
QNetworkProxy::TunnelingCapability | 0x0001 | Capacidad para abrir conexiones TCP transparentes y tunelizadas a un host remoto. El servidor proxy retransmite la transmisión literalmente de un lado a otro y no realiza ningún almacenamiento en caché. |
QNetworkProxy::ListeningCapability | 0x0002 | Capacidad para crear un socket de escucha y esperar una conexión TCP entrante desde un host remoto. |
QNetworkProxy::UdpTunnelingCapability | 0x0004 | Capacidad para retransmitir datagramas UDP a través del servidor proxy desde y hacia un host remoto. |
QNetworkProxy::CachingCapability | 0x0008 | Capacidad de almacenar en caché el contenido de la transferencia. Esta capacidad es específica de cada protocolo y tipo de proxy. Por ejemplo, los proxies HTTP pueden almacenar en caché el contenido de los datos web transferidos con comandos "GET". |
QNetworkProxy::HostNameLookupCapability | 0x0010 | Capacidad de conexión para realizar la búsqueda de un nombre de host remoto y conectarse a él, en lugar de requerir que la aplicación realice la búsqueda de nombres y solicite la conexión sólo a direcciones IP. |
QNetworkProxy::SctpTunnelingCapability | 0x00020 | Capacidad para abrir conexiones SCTP transparentes y tunelizadas a un host remoto. |
QNetworkProxy::SctpListeningCapability | 0x00040 | Capacidad para crear un socket de escucha y esperar una conexión SCTP entrante desde un host remoto. |
El tipo Capabilities es un typedef para QFlags<Capability>. Almacena una combinación OR de valores de Capacidad.
enum QNetworkProxy::ProxyType
Este enum describe los tipos de proxy de red proporcionados en Qt.
Hay dos tipos de proxies que Qt entiende: proxies transparentes y proxies de caché. El primer grupo consiste en proxies que pueden manejar cualquier transferencia de datos arbitraria, mientras que el segundo sólo puede manejar peticiones específicas. Los proxies de caché sólo tienen sentido para las clases específicas en las que se pueden utilizar.
| Constante | Valor | Descripción |
|---|---|---|
QNetworkProxy::NoProxy | 2 | No se utiliza proxy |
QNetworkProxy::DefaultProxy | 0 | El proxy se determina basándose en el proxy de aplicación establecido mediante setApplicationProxy() |
QNetworkProxy::Socks5Proxy | 1 | Socks5 Se utiliza proxy |
QNetworkProxy::HttpProxy | 3 | Se utiliza el proxy transparente HTTP |
QNetworkProxy::HttpCachingProxy | 4 | Proxy sólo para peticiones HTTP |
QNetworkProxy::FtpCachingProxy | 5 | Proxy sólo para peticiones FTP |
La siguiente tabla enumera los diferentes tipos de proxy y sus capacidades. Dado que cada tipo de proxy tiene capacidades diferentes, es importante entenderlas antes de elegir un tipo de proxy.
| Tipo de proxy | Descripción | Capacidades por defecto |
|---|---|---|
| SOCKS 5 | Proxy genérico para cualquier tipo de conexión. Soporta TCP, UDP, vinculación a un puerto (conexiones entrantes) y autenticación. | TunnelingCapability, ListeningCapability, UdpTunnelingCapability, HostNameLookupCapability |
| HTTP | Implementado mediante el comando "CONNECT", sólo admite conexiones TCP salientes; admite autenticación. | TunnelingCapability, CachingCapability, HostNameLookupCapability |
| HTTP sólo para caché | Implementado utilizando comandos HTTP normales, sólo es útil en el contexto de peticiones HTTP (véase QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
| FTP con caché | Implementado utilizando un proxy FTP, sólo es útil en el contexto de peticiones FTP (véase QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
También tenga en cuenta que no debe establecer el proxy por defecto de la aplicación (setApplicationProxy()) a un proxy que no tenga la capacidad TunnelingCapability. Si lo haces, QTcpSocket no sabrá cómo abrir conexiones.
Vea también setType(), type(), capabilities(), y setCapabilities().
Documentación de las funciones miembro
QNetworkProxy::QNetworkProxy()
Construye un QNetworkProxy con el tipo DefaultProxy.
El tipo de proxy es determinado por applicationProxy(), que por defecto es NoProxy o un proxy de todo el sistema si hay uno configurado.
Ver también setType() y setApplicationProxy().
QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
Construye un QNetworkProxy con type, hostName, port, user y password.
Las capacidades por defecto para el tipo de proxy type se establecen automáticamente.
Véase también capabilities().
QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)
Construye una copia de other.
[noexcept] QNetworkProxy::~QNetworkProxy()
Destruye el objeto QNetworkProxy.
[static] QNetworkProxy QNetworkProxy::applicationProxy()
Devuelve el proxy de red a nivel de aplicación.
Si un QAbstractSocket o QTcpSocket tiene el tipo QNetworkProxy::DefaultProxy, entonces se utiliza el QNetworkProxy devuelto por esta función.
Véase también QNetworkProxyFactory, setApplicationProxy(), QAbstractSocket::proxy(), y QTcpServer::proxy().
QNetworkProxy::Capabilities QNetworkProxy::capabilities() const
Devuelve las capacidades de este servidor proxy.
Véase también setCapabilities() y type().
bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const
Devuelve true si la cabecera headerName está en uso para este proxy. Devuelve false si el proxy no es del tipo HttpProxy o HttpCachingProxy.
Véase también rawHeader() y setRawHeader().
QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const
Devuelve el valor de la cabecera de red conocida header si está en uso para este proxy. Si no está presente, devuelve QVariant() (es decir, una variante inválida).
Véase también QNetworkRequest::KnownHeaders, rawHeader(), y setHeader().
[since 6.8] QHttpHeaders QNetworkProxy::headers() const
Devuelve las cabeceras que se establecen en esta solicitud de red.
Si el proxy no es del tipo HttpProxy o HttpCachingProxy, se devuelve QHttpHeaders construido por defecto.
Esta función se introdujo en Qt 6.8.
Véase también setHeaders().
QString QNetworkProxy::hostName() const
Devuelve el nombre del host proxy.
Véase también setHostName(), setPort() y port().
bool QNetworkProxy::isCachingProxy() const
Devuelve true si este proxy soporta la capacidad QNetworkProxy::CachingCapability.
En Qt 4.4, la capacidad estaba ligada al tipo de proxy, pero desde Qt 4.5 es posible eliminar la capacidad de caché de un proxy llamando a setCapabilities().
Ver también capabilities(), type(), y isTransparentProxy().
bool QNetworkProxy::isTransparentProxy() const
Devuelve true si este proxy admite el tunelado transparente de conexiones TCP. Esto coincide con la capacidad QNetworkProxy::TunnelingCapability.
En Qt 4.4, la capacidad estaba ligada al tipo de proxy, pero desde Qt 4.5 es posible eliminar la capacidad de caché de un proxy llamando a setCapabilities().
Ver también capabilities(), type(), y isCachingProxy().
QString QNetworkProxy::password() const
Devuelve la contraseña utilizada para la autenticación.
Véase también user(), setPassword() y setUser().
quint16 QNetworkProxy::port() const
Devuelve el puerto del host proxy.
Véase también setHostName(), setPort() y hostName().
QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const
Devuelve la forma en bruto de la cabecera headerName. Si dicha cabecera no está presente o el proxy no es del tipo HttpProxy o HttpCachingProxy, se devuelve un QByteArray vacío, que puede ser indistinguible de una cabecera presente pero sin contenido (utilice hasRawHeader() para averiguar si la cabecera existe o no).
Las cabeceras sin formato pueden establecerse con setRawHeader() o con setHeader().
Véase también header() y setRawHeader().
QList<QByteArray> QNetworkProxy::rawHeaderList() const
Devuelve una lista de todas las cabeceras sin procesar establecidas en este proxy de red. La lista está en el orden en que se establecieron las cabeceras.
Si el proxy no es del tipo HttpProxy o HttpCachingProxy se devuelve un QList vacío.
Véase también hasRawHeader() y rawHeader().
[static] void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)
Establece que el proxy de red a nivel de aplicación sea networkProxy.
Si un QAbstractSocket o QTcpSocket tiene la clase QNetworkProxy::DefaultProxy, entonces se utiliza el QNetworkProxy establecido con esta función. Si desea más flexibilidad para determinar qué proxy se utiliza, utilice la clase QNetworkProxyFactory.
Establecer un valor de proxy por defecto con esta función anulará la fábrica de proxy de aplicación establecida con QNetworkProxyFactory::setApplicationProxyFactory, y desactivará el uso de un proxy de sistema.
Véase también QNetworkProxyFactory, applicationProxy(), QAbstractSocket::setProxy(), y QTcpServer::setProxy().
void QNetworkProxy::setCapabilities(QNetworkProxy::Capabilities capabilities)
Establece las capacidades de este proxy en capabilities.
Véase también setType() y capabilities().
void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Establece el valor de la cabecera conocida header para que sea value, anulando cualquier cabecera establecida previamente. Esta operación también establece la cabecera HTTP sin procesar equivalente.
Si el proxy no es del tipo HttpProxy o HttpCachingProxy esto no tiene efecto.
Véase también QNetworkRequest::KnownHeaders, setRawHeader(), y header().
[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)
Establece newHeaders como cabeceras en esta petición de red, anulando cualquier cabecera establecida previamente.
Si algunas cabeceras corresponden a las cabeceras conocidas, se analizarán los valores y también se establecerá la forma analizada correspondiente.
Si el proxy no es del tipo HttpProxy o HttpCachingProxy esto no tiene efecto.
Esta función se introdujo en Qt 6.8.
Véase también headers() y QNetworkRequest::KnownHeaders.
[since 6.8] void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.8.
void QNetworkProxy::setHostName(const QString &hostName)
Establece el nombre del host proxy en hostName.
Véase también hostName(), setPort() y port().
void QNetworkProxy::setPassword(const QString &password)
Establece que la contraseña para la autenticación proxy sea password.
Véase también user(), setUser() y password().
void QNetworkProxy::setPort(quint16 port)
Establece el puerto del host proxy en port.
Véase también hostName(), setHostName(), y port().
void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
Establece la cabecera headerName con el valor headerValue. Si headerName corresponde a una cabecera conocida (véase QNetworkRequest::KnownHeaders), se analizará el formato sin procesar y se establecerá también la cabecera "cocinada" correspondiente.
Por ejemplo:
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));
también establecerá la cabecera conocida LastModifiedHeader para que sea el objeto QDateTime de la fecha analizada.
Nota: Establecer la misma cabecera dos veces anula la configuración anterior. Para lograr el comportamiento de múltiples cabeceras HTTP del mismo nombre, debe concatenar los dos valores, separándolos con una coma (",") y establecer una única cabecera sin procesar.
Si el proxy no es del tipo HttpProxy o HttpCachingProxy esto no tiene ningún efecto.
Véase también QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader(), y rawHeader().
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
Establece el tipo de proxy de esta instancia en type.
Tenga en cuenta que cambiar el tipo de un proxy no cambia el conjunto de capacidades que tiene este objeto QNetworkProxy si se ha establecido alguna capacidad con setCapabilities().
Véase también type() y setCapabilities().
void QNetworkProxy::setUser(const QString &user)
Establece que el nombre de usuario para la autenticación proxy sea user.
Véase también user(), setPassword() y password().
[noexcept] void QNetworkProxy::swap(QNetworkProxy &other)
Intercambia esta instancia de proxy de red con other. Esta operación es muy rápida y nunca falla.
QNetworkProxy::ProxyType QNetworkProxy::type() const
Devuelve el tipo de proxy de esta instancia.
Véase también setType().
QString QNetworkProxy::user() const
Devuelve el nombre de usuario utilizado para la autenticación.
Véase también setUser(), setPassword() y password().
bool QNetworkProxy::operator!=(const QNetworkProxy &other) const
Compara el valor de este proxy de red con other y devuelve true si difieren.
QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
Asigna el valor del proxy de red other a este proxy de red.
bool QNetworkProxy::operator==(const QNetworkProxy &other) const
Compara el valor de este proxy de red con other y devuelve true si son iguales (mismo tipo de proxy, servidor, así como nombre de usuario y contraseña).
© 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.