Spec-Zone.ru › Qt 5.13

Класс QNetworkProxyFactory

Класс QNetworkProxyFactory предоставляет тонкую настройку выбора прокси-серверов. Подробнее...

Заголовок: #include <QNetworkProxyFactory>
qmake: QT += network
С момента: Qt 4.5

Этот класс был представлен в 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 — это расширение класса 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 некоторые из перечисленных ограничений могут быть устранены.

  • На 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.13/qnetworkproxyfactory.html

Spec-Zone.ru

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