Класс QNetworkProxyFactory
Класс QNetworkProxyFactory предоставляет тонкую настройку выбора прокси-серверов. Подробнее...
| Заголовок: | #include <QNetworkProxyFactory> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
Открытые функции
| QNetworkProxyFactory() | |
| virtual | ~QNetworkProxyFactory() |
| virtual QList<QNetworkProxy> | queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0 |
Статические открытые члены
| QList<QNetworkProxy> | proxyForQuery(const QNetworkProxyQuery &query) |
| void | setApplicationProxyFactory(QNetworkProxyFactory *factory) |
| void | setUseSystemConfiguration(bool enable) |
| QList<QNetworkProxy> | systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery()) |
| bool | usesSystemConfiguration() |
Подробное описание
QNetworkProxyFactory — расширение класса QNetworkProxy, позволяющее приложениям более точно контролировать использование прокси-серверов в зависимости от сокета, запрашивающего прокси. Это позволяет приложению применять различные настройки в зависимости от протокола или имени хоста назначения, например.
QNetworkProxyFactory может быть установлен глобально для приложения, в этом случае он переопределит любые глобальные прокси, установленные с помощью QNetworkProxy::setApplicationProxy(). Если он установлен глобально, все сокеты, созданные с Qt, будут запрашивать фабрику для определения используемого прокси.
Фабрика также может быть установлена в некоторых фреймворках, поддерживающих несколько подключений, таких как QNetworkAccessManager. Если она установлена на таком объекте, фабрика будет запрошена только для сокетов, созданных этим фреймворком.
Системные прокси
Вы можете настроить фабрику на использование настроек системного прокси. Вызовите функцию setUseSystemConfiguration() со значением true, чтобы включить это поведение, или false, чтобы отключить его.
Аналогично, вы можете использовать фабрику для прямого запроса к системному прокси, вызвав его функцию systemProxyForQuery().
Предупреждение: В зависимости от конфигурации системы пользователя использование функций системного прокси на некоторых платформах может быть ограничено. В документации к systemProxyForQuery() приведен список этих ограничений для затронутых платформ.
Документация по функциям-членам
[virtual] QNetworkProxyFactory::QNetworkProxyFactory()
Создаёт объект QNetworkProxyFactory.
Так как QNetworkProxyFactory — абстрактный класс, вы не можете создавать объекты типа QNetworkProxyFactory напрямую.
[virtual] QNetworkProxyFactory::~QNetworkProxyFactory()
Удаляет объект QNetworkProxyFactory.
[static] QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuery &query)
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-сервера, которые будут использоваться в порядке приоритета.
[pure virtual] QList<QNetworkProxy> QNetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery())
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-сервера, которые будут использоваться в порядке приоритета.
При переопределении этого класса позаботьтесь о возвращении как минимум одного элемента.
Если вы не можете определить лучший альтернативный прокси, используйте QNetworkProxy::DefaultProxy, что указывает коду, запрашивающему прокси, использовать более высокую альтернативу. Например, если эта фабрика установлена для объекта QNetworkAccessManager, DefaultProxy укажет ему запросить настройки прокси приложения.
Если эта фабрика установлена как фабрика прокси приложения, DefaultProxy и NoProxy будут иметь одинаковое значение.
[static] void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)
Устанавливает фабрику прокси для всего приложения на factory. Эта функция принимает владение этим объектом и удаляет его при необходимости.
Глобальный прокси используется в качестве последней попытки, когда все другие запросы выбора прокси вернули QNetworkProxy::DefaultProxy. Например, объекты QTcpSocket могут иметь прокси, установленный с помощью QTcpSocket::setProxy, но если он не установлен, будет запрошена фабрика прокси-класса, установленная этой функцией.
Если вы установили фабрику прокси с помощью этой функции, любые прокси приложения, установленные с помощью QNetworkProxy::setApplicationProxy, будут переопределены, и usesSystemConfiguration() вернёт false.
См. также QNetworkProxy::setApplicationProxy(), QAbstractSocket::proxy() и QAbstractSocket::setProxy().
[static] void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)
Включает использование платформно-специфических настроек прокси и только их. Подробнее см. systemProxyForQuery().
Вызов этой функции со значением enable, установленным в true, сбрасывает любой прокси или QNetworkProxyFactory, который уже установлен.
Примечание: См. документацию к systemProxyForQuery() для списка ограничений, связанных с использованием системных прокси.
[static] QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-сервера, которые будут использоваться в порядке приоритета.
Эта функция может быть использована для определения платформно-специфических настроек прокси. Эта функция будет использовать библиотеки, предоставляемые операционной системой, для определения прокси для данного подключения, если такие библиотеки существуют. Если их нет, эта функция просто вернёт QNetworkProxy типа QNetworkProxy::NoProxy.
В Windows эта функция будет использовать функции WinHTTP DLL. Несмотря на название, Microsoft рекомендует использовать её для всех приложений, требующих сетевых подключений, а не только HTTP. Это будет учитывать настройки прокси, установленные в реестре с помощью инструмента proxycfg.exe. Если эти настройки не найдены, эта функция попытается получить настройки Internet Explorer и использовать их.
В macOS эта функция будет получать настройки прокси, используя фреймворк SystemConfiguration от Apple. Она будет применять конфигурации прокси FTP, HTTP и HTTPS для запросов, содержащих теги протокола «ftp», «http» и «https» соответственно. Если прокси SOCKS включён в этой конфигурации, эта функция будет использовать сервер SOCKS для всех запросов. Если SOCKS не включён, она будет использовать прокси HTTPS для всех запросов TcpSocket и UrlRequest.
В других системах эта функция будет извлекать настройки прокси из переменной окружения «http_proxy». Эта переменная должна быть URL-адресом, использующим один из следующих схем: «http», «socks5» или «socks5h».
Ограничения
Это ограничения для текущей версии этой функции. В будущих версиях Qt некоторые из перечисленных ограничений могут быть сняты.
- В macOS эта функция проигнорирует настройки Proxy Auto Configuration, так как не может выполнить связанный код ECMAScript.
- На платформах Windows эта функция может выполняться несколько секунд в зависимости от конфигурации системы пользователя.
[static, since 5.8] bool QNetworkProxyFactory::usesSystemConfiguration()
Возвращает, включены ли настройки прокси, специфичные для платформы.
Эта функция была добавлена в Qt 5.8.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qnetworkproxyfactory.html