Класс QNetworkProxyFactory
Класс QNetworkProxyFactory предоставляет тонкий контроль над выбором прокси-серверов. Подробнее...
| Заголовок: | #include <QNetworkProxyFactory> |
| qmake: | QT += network |
| С момента: | Qt 4.5 |
Этот класс был представлен в Qt 4.5.
Открытые функции
| 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() приведен список этих ограничений для соответствующих платформ.
Документация по функциям-членам
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() для списка ограничений, связанных с использованием системных прокси.
Эта функция была представлена в Qt 4.6.
[static] QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-серверы, которые следует использовать в порядке приоритета.
Эта функция может использоваться для определения платформенно-специфичных настроек прокси. Эта функция будет использовать библиотеки, предоставляемые операционной системой, для определения прокси для данного подключения, если такие библиотеки существуют. Если нет, эта функция просто вернёт QNetworkProxy типа QNetworkProxy::NoProxy.
В Windows эта функция будет использовать функции DLL WinHTTP. Несмотря на своё название, 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 эта функция проигнорирует настройки автоматической конфигурации прокси, так как не может выполнить связанный код ECMAScript.
- В Windows эта функция может потребовать несколько секунд для выполнения, в зависимости от конфигурации системы пользователя.
[static] 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-5.14/qnetworkproxyfactory.html