Класс 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 напрямую.
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() для списка ограничений, связанных с использованием системных прокси.
Эта функция была добавлена в Qt 4.6.
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 могут снять некоторые из перечисленных ограничений.
END_OF_DOCUMENT_MARKER ```- На 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.12/qnetworkproxyfactory.html