Spec-Zone.ru › Qt 5.6

Класс 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())

Подробное описание

Класс 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, будут переопределены.

См. также QNetworkProxy::setApplicationProxy(), QAbstractSocket::proxy() и QAbstractSocket::setProxy().

void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)

Включает использование настроек прокси, специфичных для платформы, и только их. Более подробную информацию см. в systemProxyForQuery().

Внутри этот метод (при вызове с enable, установленным в true) устанавливает фабрику прокси для всего приложения. По этой причине этот метод исключает setApplicationProxyFactory(): вызов setApplicationProxyFactory() переопределяет использование системного прокси, а вызов setUseSystemConfiguration() переопределяет любой прикладной прокси или фабрику прокси, которые были установлены ранее.

Примечание: См. документацию к 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.

В BlackBerry эта функция получает настройки прокси для стандартной конфигурации, используя системную конфигурацию. Тип устанавливается на основе тегов протоколов «http», «https», «ftp» соответственно. По умолчанию предполагается тип http. Имя пользователя и пароль прокси также устанавливаются во время запроса с помощью системной конфигурации.

В других системах эта функция получит настройки прокси из переменной окружения «http_proxy». Эта переменная должна быть URL-адресом, использующим один из следующих схем: «http», «socks5» или «socks5h».

Ограничения

Вот ограничения для текущей версии этой функции. Будущие версии Qt могут снять некоторые из перечисленных здесь ограничений.

  • В macOS эта функция будет игнорировать настройки автоматической настройки прокси, поскольку она не может выполнить связанный код ECMAScript.
  • В платформах Windows эта функция может выполняться несколько секунд в зависимости от настроек системы пользователя.
  • В BlackBerry поддерживаются только запросы UrlRequest и TcpSocket. SOCKS не поддерживается. Данные учетных данных прокси извлекаются только для стандартной конфигурации.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qnetworkproxyfactory.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API