Класс 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() содержит список этих ограничений для тех платформ, которые затронуты.
Документация по членам-функциям
QNetworkProxyFactory::QNetworkProxyFactory()
Создаёт объект QNetworkProxyFactory.
Так как QNetworkProxyFactory — это абстрактный класс, вы не можете создавать объекты типа QNetworkProxyFactory напрямую.
QNetworkProxyFactory::~QNetworkProxyFactory()
Удаляет объект QNetworkProxyFactory.
QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuery &query)
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-серверы для использования, в порядке предпочтения.
QList<QNetworkProxy> QNetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery())
Эта функция принимает запрос query, анализирует детали типа сокета или запроса и возвращает список объектов QNetworkProxy, указывающих прокси-серверы для использования, в порядке предпочтения.
При переопределении этого класса следует вернуть по крайней мере один элемент.
Если вы не можете определить лучший альтернативный прокси, используйте QNetworkProxy::DefaultProxy, что сообщает коду, запрашивающему прокси, использовать более высокий альтернативный вариант. Например, если эта фабрика установлена для объекта QNetworkAccessManager, DefaultProxy сообщит ему запрашивать настройки прокси на уровне приложения.
Если эта фабрика установлена как фабрика прокси приложения, DefaultProxy и NoProxy будут иметь одинаковый смысл.
void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)
Устанавливает фабрику прокси для всего приложения в factory. Эта функция примет владение этим объектом и удалит его при необходимости.
Глобальный прокси используется как крайнее средство, когда все другие запросы выбора прокси возвращали QNetworkProxy::DefaultProxy. Например, объекты QTcpSocket могут иметь установленный прокси с помощью QTcpSocket::setProxy, но если он не установлен, будет запрашиваться класс фабрики прокси, установленный этой функцией.
Если вы устанавливаете фабрику прокси с помощью этой функции, любые прокси на уровне приложения, установленные с помощью QNetworkProxy::setApplicationProxy, будут переопределены, и usesSystemConfiguration() вернёт false.
См. также QNetworkProxy::setApplicationProxy(), QAbstractSocket::proxy() и QAbstractSocket::setProxy().
void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)
Включает использование платформа-специфичных настроек прокси, и только их. См. systemProxyForQuery() для получения дополнительной информации.
Вызов этой функции с enable, установленным в true, сбрасывает любой установленный прокси или QNetworkProxyFactory.
Примечание: См. документацию к systemProxyForQuery() для списка ограничений, связанных с использованием системных прокси.
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.1/qnetworkproxyfactory.html