Класс 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 нельзя создавать напрямую.
[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 эта функция проигнорирует настройки автоматической настройки прокси, так как не может выполнить соответствующий код 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.2/qnetworkproxyfactory.html