Класс QNetworkProxyFactory
Класс QNetworkProxyFactory обеспечивает тонкую настройку выбора прокси-сервера. Подробнее...
| Заголовок: | #include <QNetworkProxyFactory> |
| qmake: | QT += network |
| С момента: | 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 обеспечивает тонкую настройку выбора прокси-сервера.
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.9/qnetworkproxyfactory.html