Spec-Zone.ru › Qt 5.14

Класс QNetworkAccessManager

Класс QNetworkAccessManager позволяет приложению отправлять сетевые запросы и получать ответы. Подробнее...

Заголовок: #include <QNetworkAccessManager>
qmake: QT += network
С момента: Qt 4.4
Наследует: QObject

Этот класс был введён в Qt 4.4.

  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно входящими.

Общие типы

Перечисление NetworkAccessibility { UnknownAccessibility, NotAccessible, Accessible }
Перечисление Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation }

Свойства

  • networkAccessible : NetworkAccessibility

Общедоступные функции

QNetworkAccessManager(QObject *parent = nullptr)
virtual ~QNetworkAccessManager()
QNetworkConfiguration activeConfiguration() const
void addStrictTransportSecurityHosts(const QVector<QHstsPolicy> &knownHosts)
bool autoDeleteReplies() const
QAbstractNetworkCache * cache() const
void clearAccessCache()
void clearConnectionCache()
QNetworkConfiguration configuration() const
void connectToHost(const QString &hostName, quint16 port = 80)
void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
void connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
QNetworkCookieJar * cookieJar() const
QNetworkReply * deleteResource(const QNetworkRequest &request)
void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())
QNetworkReply * get(const QNetworkRequest &request)
QNetworkReply * head(const QNetworkRequest &request)
bool isStrictTransportSecurityEnabled() const
bool isStrictTransportSecurityStoreEnabled() const
QNetworkAccessManager::NetworkAccessibility networkAccessible() const
QNetworkReply * post(const QNetworkRequest &request, QIODevice *data)
QNetworkReply * post(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply * post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkProxy proxy() const
QNetworkProxyFactory * proxyFactory() const
QNetworkReply * put(const QNetworkRequest &request, QIODevice *data)
QNetworkReply * put(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply * put(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QNetworkRequest::RedirectPolicy redirectPolicy() const
QNetworkReply * sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)
QNetworkReply * sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
QNetworkReply * sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)
void setAutoDeleteReplies(bool shouldAutoDelete)
void setCache(QAbstractNetworkCache *cache)
void setConfiguration(const QNetworkConfiguration &config)
void setCookieJar(QNetworkCookieJar *cookieJar)
void setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible)
void setProxy(const QNetworkProxy &proxy)
void setProxyFactory(QNetworkProxyFactory *factory)
void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
void setStrictTransportSecurityEnabled(bool enabled)
QVector<QHstsPolicy> strictTransportSecurityHosts() const
QStringList supportedSchemes() const

Сигналы

void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
void encrypted(QNetworkReply *reply)
void finished(QNetworkReply *reply)
void networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)
void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

Защищенные функции

virtual QNetworkReply * createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

Защищенные слоты

QStringList supportedSchemesImplementation() const

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

API доступа к сети построен вокруг объекта QNetworkAccessManager, который хранит общие настройки и параметры для отправляемых им запросов. Он содержит конфигурацию прокси и кэша, а также сигналы, связанные с такими проблемами, и сигналы ответа, которые можно использовать для отслеживания хода сетевой операции. Для всего приложения Qt должен быть достаточным один экземпляр QNetworkAccessManager. Так как QNetworkAccessManager основан на QObject, он может использоваться только из потока, к которому он принадлежит.

После создания объекта QNetworkAccessManager приложение может использовать его для отправки запросов через сеть. Предоставляется группа стандартных функций, которые принимают запрос и необязательные данные, и каждая возвращает объект QNetworkReply. Возвращаемый объект используется для получения любых данных, возвращенных в ответ на соответствующий запрос.

Простой запрос данных из сети можно осуществить следующим образом:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, &QNetworkAccessManager::finished,
        this, &MyClass::replyFinished);

manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

QNetworkAccessManager имеет асинхронный API. Когда вызывается слот replyFinished выше, параметр, который он принимает, — это объект QNetworkReply, содержащий загруженные данные, а также метаданные (заголовки и т. д.).

Примечание: После завершения запроса пользователю необходимо удалить объект QNetworkReply в подходящее время. Не удаляйте его напрямую внутри слота, подключенного к finished(). Используйте функцию deleteLater().

Примечание: QNetworkAccessManager помещает запросы в очередь. Количество одновременно выполняемых запросов зависит от протокола. В настоящее время для протокола HTTP на настольных платформах 6 запросов выполняются параллельно для одной комбинации хост/порт.

Более сложный пример, предполагая, что менеджер уже существует:

QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead);
connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

Поддержка сети и роуминга

С добавлением API управления несущими в Qt 4.7 QNetworkAccessManager получил возможность управлять сетевыми подключениями. QNetworkAccessManager может запускать сетевой интерфейс, если устройство находится в автономном режиме, и завершать интерфейс, если текущий процесс является последним использующим канал связи. Обратите внимание, что некоторые платформы используют временные интервалы с момента остановки последнего приложения, использующего канал связи, до фактического завершения системного подключения. Роуминг также прозрачен. Любые запросы, помещенные в очередь/ожидающие обработку в сети, автоматически передаются на новый доступный пункт.

Клиентам, желающим использовать эту функцию, не требуется никаких изменений. Фактически, существующий специфичный для платформы код подключения может быть удален из приложения.

Примечание: Поддержка сети и роуминга в QNetworkAccessManager обусловлена поддержкой управления подключением платформы. Свойство QNetworkConfigurationManager::NetworkSessionRequired может быть использовано для определения того, использует ли QNetworkAccessManager эту функцию.

См. также QNetworkRequest, QNetworkReply и QNetworkProxy.

Документация типов членов

перечисление QNetworkAccessManager::NetworkAccessibility

Указывает, доступна ли сеть через этот менеджер доступа к сети.

Константа Значение Описание
QNetworkAccessManager::UnknownAccessibility -1 Доступность сети невозможно определить.
QNetworkAccessManager::NotAccessible 0 Сеть в настоящее время недоступна, либо из-за отсутствия сетевого покрытия, либо доступ к сети был явно отключен вызовом setNetworkAccessible().
QNetworkAccessManager::Accessible 1 Сеть доступна.

См. также networkAccessible.

перечисление QNetworkAccessManager::Operation

Указывает операцию, обрабатываемую этим ответом.

Константа Значение Описание
QNetworkAccessManager::HeadOperation 1 операция получения заголовков (создана с помощью head())
QNetworkAccessManager::GetOperation 2 получение заголовков и загрузка содержимого (создано с помощью get())
QNetworkAccessManager::PutOperation 3 операция загрузки содержимого (создана с помощью put())
QNetworkAccessManager::PostOperation 4 отправка содержимого HTML-формы на обработку через HTTP POST (создана с помощью post())
QNetworkAccessManager::DeleteOperation 5 операция удаления содержимого (создана с помощью deleteResource())
QNetworkAccessManager::CustomOperation 6 пользовательская операция (создана с помощью sendCustomRequest())

Это перечисление было введено или изменено в Qt 4.7.

См. также QNetworkReply::operation().

Документация свойств

networkAccessible : NetworkAccessibility

Это свойство содержит информацию о том, доступна ли в данный момент сеть через этот менеджер доступа к сети.

Если сеть недоступна, менеджер доступа к сети не будет обрабатывать новые сетевые запросы, все такие запросы завершатся с ошибкой. Запросы с URL-адресами со схемой file:// все равно будут обрабатываться.

По умолчанию значение этого свойства отражает физическое состояние устройства. Приложения могут переопределять его, чтобы отключить все сетевые запросы через этот менеджер доступа к сети, вызвав

networkAccessManager->setNetworkAccessible(QNetworkAccessManager::NotAccessible);

Сетевые запросы можно снова включить, и это свойство возобновит отражение фактического состояния устройства, вызвав

networkAccessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);

Примечание: Вызов setNetworkAccessible() не изменяет состояние сети.

Это свойство было введено в Qt 4.7.

Функции доступа:

QNetworkAccessManager::NetworkAccessibility networkAccessible() const
void setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible)

Сигнал уведомления:

void networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)

Документация функций членов

QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)

Создаёт объект QNetworkAccessManager, который является центром API доступа к сети, и устанавливает parent в качестве родительского объекта.

[signal] void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)

Этот сигнал испускается всякий раз, когда сервер требует аутентификации перед предоставлением запрошенного содержимого. Слот, подключённый к этому сигналу, должен заполнить данные для аутентификации (которые можно определить, проанализировав объект reply) в объекте authenticator.

QNetworkAccessManager будет кэшировать данные аутентификации и будет отправлять те же значения, если сервер снова запросит аутентификацию, не испуская сигнал authenticationRequired(). Если сервер отклонит предоставленные данные аутентификации, этот сигнал будет испущен снова.

Примечание: Чтобы не отправлять данные аутентификации, не следует вызывать методы setUser() или setPassword() в объекте authenticator. Это приведёт к испусканию сигнала finished() с QNetworkReply, содержащим ошибку AuthenticationRequiredError.

Примечание: Невозможно использовать QueuedConnection для подключения к этому сигналу, так как подключение завершится неудачно, если в объекте authenticator не будут заполнены новые данные к моменту возвращения сигнала.

См. также proxyAuthenticationRequired(), QAuthenticator::setUser() и QAuthenticator::setPassword().

[signal] void QNetworkAccessManager::encrypted(QNetworkReply *reply)

Этот сигнал испускается, когда сессия SSL/TLS успешно завершает начальный обмен данными. В этот момент никакие пользовательские данные ещё не были переданы. Сигнал может быть использован для выполнения дополнительных проверок цепочки сертификатов, например, для уведомления пользователей о смене сертификата веб-сайта. Параметр reply указывает, какой сетевой ответ отвечает за событие. Если ответ не соответствует ожидаемым критериям, он должен быть прерван вызовом QNetworkReply::abort() слотом, подключённым к этому сигналу. Настройки SSL, используемые в данный момент, можно проверить с помощью метода QNetworkReply::sslConfiguration().

Внутренне, QNetworkAccessManager может открыть несколько подключений к серверу, чтобы позволить обработку запросов параллельно. Эти подключения могут быть повторно использованы, что означает, что сигнал encrypted() не будет испущен. Это означает, что вы гарантированно получите этот сигнал только для первого подключения к сайту за время существования QNetworkAccessManager.

Эта функция была добавлена в Qt 5.1.

См. также QSslSocket::encrypted() и QNetworkReply::encrypted().

[signal] void QNetworkAccessManager::finished(QNetworkReply *reply)

Этот сигнал испускается всякий раз, когда завершается ожидающий сетевой ответ. Параметр reply будет содержать указатель на ответ, который только что завершился. Этот сигнал испускается вместе с сигналом QNetworkReply::finished().

См. QNetworkReply::finished() для получения информации о состоянии объекта.

Примечание: Не удаляйте объект reply в слоте, подключённом к этому сигналу. Используйте deleteLater().

См. также QNetworkReply::finished() и QNetworkReply::error().

[signal] void QNetworkAccessManager::networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)

Этот сигнал испускается при изменении значения свойства networkAccessible. accessible — новое значение доступности сети.

Примечание: Сигнал-уведомление для свойства networkAccessible.

[signal] void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)

Этот сигнал испускается, если обмен SSL/TLS согласовывает криптографический набор PSK, и поэтому требуется аутентификация PSK. Объект reply — QNetworkReply, который согласовывает такие криптографические наборы.

При использовании PSK клиент должен отправить серверу действительный идентификатор и действительный предварительно согласованный ключ, чтобы продолжить обмен SSL. Приложения могут предоставить эту информацию в слоте, подключённом к этому сигналу, заполнив переданный объект authenticator в соответствии со своими потребностями.

Примечание: Игнорирование этого сигнала или не предоставление необходимых данных аутентификации приведёт к сбою обмена и, следовательно, к прерыванию подключения.

Примечание: Объект authenticator принадлежит ответу и не должен удаляться приложением.

Эта функция была добавлена в Qt 5.5.

См. также QSslPreSharedKeyAuthenticator.

[signal] void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)

Этот сигнал испускается всякий раз, когда прокси требует аутентификации, и QNetworkAccessManager не может найти действительные сохранённые данные аутентификации. Слот, подключённый к этому сигналу, должен заполнить данные аутентификации для прокси proxy в объекте authenticator.

QNetworkAccessManager будет кэшировать данные аутентификации. При следующем запросе прокси на аутентификацию QNetworkAccessManager автоматически отправит те же данные аутентификации, не испуская сигнал proxyAuthenticationRequired снова.

Если прокси отклонит данные аутентификации, QNetworkAccessManager повторно испустит этот сигнал.

См. также proxy(), setProxy() и authenticationRequired().

[signal] void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

Этот сигнал испускается, если сессия SSL/TLS столкнулась с ошибками во время настройки, включая ошибки проверки сертификатов. Параметр errors содержит список ошибок, а reply — QNetworkReply, который столкнулся с этими ошибками.

Чтобы указать, что ошибки не являются критическими и соединение должно быть продолжено, функция QNetworkReply::ignoreSslErrors() должна быть вызвана из слота, подключённого к этому сигналу. Если этого не сделать, сессия SSL будет разорвана до обмена данными (включая URL).

Этот сигнал можно использовать для отображения сообщения об ошибке пользователю, указывающего на потенциальную угрозу безопасности, и отображения настроек SSL (см. sslConfiguration() для получения этих настроек). Если пользователь решит продолжить после анализа удалённого сертификата, слот должен вызвать ignoreSslErrors().

См. также QSslSocket::sslErrors(), QNetworkReply::sslErrors(), QNetworkReply::sslConfiguration() и QNetworkReply::ignoreSslErrors().

[protected slot] QStringList QNetworkAccessManager::supportedSchemesImplementation() const

Перечисляет все схемы URL, поддерживаемые менеджером доступа.

Не следует вызывать эту функцию напрямую; используйте QNetworkAccessManager::supportedSchemes() вместо этого.

Переопределите этот слот, чтобы предоставить собственные поддерживаемые схемы в подклассе QNetworkAccessManager. Это необходимо, например, когда подкласс предоставляет поддержку новых протоколов.

Из-за ограничений бинарной совместимости метод supportedSchemes() (введённый в Qt 5.2) не является виртуальным. Вместо этого, supportedSchemes() будет динамически определять и вызывать этот слот.

Эта функция была добавлена в Qt 5.2.

См. также supportedSchemes().

[virtual] QNetworkAccessManager::~QNetworkAccessManager()

Удаляет объект QNetworkAccessManager и освобождает все ресурсы. Обратите внимание, что объекты QNetworkReply, возвращаемые этим классом, имеют этот объект в качестве родительского, что означает, что они будут удалены вместе с ним, если вы не вызовете QObject::setParent() на них.

QNetworkConfiguration QNetworkAccessManager::activeConfiguration() const

Возвращает текущую активную сетевую конфигурацию.

Если сетевая конфигурация, возвращаемая методом configuration(), имеет тип QNetworkConfiguration::ServiceNetwork, эта функция вернёт текущую активную дочернюю конфигурацию сети этой конфигурации. В противном случае возвращает ту же сетевую конфигурацию, что и configuration().

Используйте эту функцию для получения фактической сетевой конфигурации, которая используется в данный момент сетевой сессией.

Эта функция была добавлена в Qt 4.7.

См. также configuration().

END_OF_DOCUMENT_MARKER

void QNetworkAccessManager::addStrictTransportSecurityHosts(const QVector<QHstsPolicy> &knownHosts)

Добавляет политики HTTP Strict Transport Security в кэш HSTS. knownHosts содержит известные хосты с информацией QHstsPolicy.

Примечание: Истекшая политика удалит известный хост из кэша, если он был в нём ранее.

Примечание: При обработке HTTP-ответов QNetworkAccessManager также может обновлять кэш HSTS, удаляя или обновляя существующие политики или добавляя новые knownHosts. Таким образом, текущая реализация ориентирована на сервер, код клиента может предоставить QNetworkAccessManager с ранее известными или обнаруженными политиками, но эта информация может быть переопределена заголовками ответа "Strict-Transport-Security".

Эта функция была добавлена в Qt 5.9.

См. также addStrictTransportSecurityHosts(), enableStrictTransportSecurityStore(), и QHstsPolicy.

bool QNetworkAccessManager::autoDeleteReplies() const

Возвращает true, если QNetworkAccessManager в настоящее время настроен на автоматическое удаление QNetworkReplies, в противном случае false.

Эта функция была добавлена в Qt 5.14.

См. также setAutoDeleteReplies и QNetworkRequest::AutoDeleteReplyOnFinishAttribute.

QAbstractNetworkCache *QNetworkAccessManager::cache() const

Возвращает кэш, используемый для хранения данных, полученных из сети.

Эта функция была добавлена в Qt 4.5.

См. также setCache().

void QNetworkAccessManager::clearAccessCache()

Очищает внутренний кэш данных аутентификации и сетевых подключений.

Эта функция полезна для проведения автоматических тестов.

Эта функция была добавлена в Qt 5.0.

См. также clearConnectionCache().

void QNetworkAccessManager::clearConnectionCache()

Очищает внутренний кэш сетевых подключений. В отличие от clearAccessCache() данные аутентификации сохраняются.

Эта функция была добавлена в Qt 5.9.

См. также clearAccessCache().

QNetworkConfiguration QNetworkAccessManager::configuration() const

Возвращает конфигурацию сети, которая будет использоваться для создания сетевого сеанса, который будет использоваться при обработке сетевых запросов.

Эта функция была добавлена в Qt 4.7.

См. также setConfiguration() и activeConfiguration().

void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)

Инициализирует подключение к хосту, заданному hostName на порту port. Эта функция полезна для завершения TCP-рукопожатия с хостом перед отправкой HTTP-запроса, что приводит к уменьшению задержки сети.

Примечание: Эта функция не имеет возможности сообщать об ошибках.

Эта функция была добавлена в Qt 5.2.

См. также connectToHostEncrypted(), get(), post(), put(), и deleteResource().

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())

Инициализирует подключение к хосту, заданному hostName на порту port, используя sslConfiguration. Эта функция полезна для завершения TCP и SSL-рукопожатия с хостом перед отправкой HTTPS-запроса, что приводит к уменьшению задержки сети.

Примечание: Предварительное подключение SPDY-соединения можно выполнить, вызвав setAllowedNextProtocols() на sslConfiguration со значением QSslConfiguration::NextProtocolSpdy3_0, включенным в список разрешенных протоколов. При использовании SPDY достаточно одного подключения на хост, т.е. вызов этого метода несколько раз на один хост не приведет к ускорению сетевых транзакций.

Примечание: Эта функция не имеет возможности сообщать об ошибках.

Эта функция была добавлена в Qt 5.2.

См. также connectToHost(), get(), post(), put(), и deleteResource().

void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)

Это перегруженная функция.

Инициализирует подключение к хосту, заданному hostName на порту port, используя sslConfiguration с установленным peerName в качестве имени хоста, используемого для проверки сертификата. Эта функция полезна для завершения TCP и SSL-рукопожатия с хостом перед отправкой HTTPS-запроса, что приводит к уменьшению задержки сети.

Примечание: Предварительное подключение SPDY-соединения можно выполнить, вызвав setAllowedNextProtocols() на sslConfiguration со значением QSslConfiguration::NextProtocolSpdy3_0, включенным в список разрешенных протоколов. При использовании SPDY достаточно одного подключения на хост, т.е. вызов этого метода несколько раз на один хост не приведет к ускорению сетевых транзакций.

Примечание: Эта функция не имеет возможности сообщать об ошибках.

Эта функция была добавлена в Qt 5.13.

См. также connectToHost(), get(), post(), put(), и deleteResource().

QNetworkCookieJar *QNetworkAccessManager::cookieJar() const

Возвращает QNetworkCookieJar, который используется для хранения файлов cookie, полученных из сети, а также файлов cookie, которые должны быть отправлены.

См. также setCookieJar().

[virtual protected] QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)

Возвращает новый объект QNetworkReply для обработки операции op и запроса originalReq. Устройство outgoingData всегда равно 0 для запросов Get и Head, но является значением, переданным в post() и put() в этих операциях (варианты QByteArray передадут объект QBuffer).

В реализации по умолчанию вызывается QNetworkCookieJar::cookiesForUrl() для кэша cookie, установленного с помощью setCookieJar(), чтобы получить cookie для отправки на удаленный сервер.

Возвращаемый объект должен быть в открытом состоянии.

QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)

Отправляет запрос на удаление ресурса, идентифицированного URL в request.

Примечание: Эта функция в настоящее время доступна только для HTTP, выполняя HTTP-запрос DELETE.

Эта функция была добавлена в Qt 4.6.

См. также get(), post(), put(), и sendCustomRequest().

void QNetworkAccessManager::enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())

Если enabled равно true, внутренний кэш HSTS будет использовать постоянное хранилище для чтения и записи политик HSTS. storeDir определяет расположение этого хранилища. По умолчанию расположение задаётся QStandardPaths::CacheLocation. Если нет возможности записи в QStandartPaths::CacheLocation, а storeDir пустая строка, хранилище будет расположено в рабочей директории программы.

Примечание: Если кэш HSTS уже содержит политики HSTS к моменту активации постоянного хранилища, эти политики будут сохранены в хранилище. В случае, если кэш и хранилище содержат одни и те же известные хосты, политики из кэша считаются более актуальными (и, следовательно, перезапишут предыдущие значения в хранилище). Если это поведение нежелательно, активируйте хранилище HSTS до включения Strict Transport Security. По умолчанию постоянное хранилище политик HSTS отключено.

Эта функция была добавлена в Qt 5.10.

END_OF_DOCUMENT_MARKER

См. также isStrictTransportSecurityStoreEnabled(), setStrictTransportSecurityEnabled() и QStandardPaths::standardLocations().

QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)

Отправляет запрос для получения содержимого целевого запроса request и возвращает новый объект QNetworkReply, открытый для чтения, который излучает сигнал readyRead() всякий раз, когда поступают новые данные.

Будут загружены содержимое и связанные заголовки.

См. также post(), put(), deleteResource() и sendCustomRequest().

QNetworkReply *QNetworkAccessManager::head(const QNetworkRequest &request)

Отправляет запрос для получения сетевых заголовков для request и возвращает новый объект QNetworkReply, который будет содержать эти заголовки.

Функция названа в соответствии с ассоциированным HTTP-запросом (HEAD).

bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const

Возвращает true, если HTTP Strict Transport Security (HSTS) был включен. По умолчанию HSTS отключен.

Эта функция была добавлена в Qt 5.9.

См. также setStrictTransportSecurityEnabled().

bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const

Возвращает true, если кэш HSTS использует постоянный хранилище для загрузки и сохранения политик HSTS.

Эта функция была добавлена в Qt 5.10.

См. также enableStrictTransportSecurityStore().

QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccessible() const

Возвращает текущую доступность сети.

Эта функция была добавлена в Qt 4.7.

Примечание: Функция-геттер для свойства networkAccessible.

См. также setNetworkAccessible().

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)

Отправляет HTTP-запрос POST по адресу, указанному в request, и возвращает новый объект QNetworkReply, открытый для чтения, который будет содержать ответ, отправленный сервером. Содержимое устройства data будет загружено на сервер.

data должен быть открыт для чтения и должен оставаться валидным до тех пор, пока для данного ответа не будет излучен сигнал finished().

Примечание: Отправка запроса POST по протоколам, отличным от HTTP и HTTPS, не определена и, вероятно, завершится неудачей.

См. также get(), put(), deleteResource() и sendCustomRequest().

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)

Это перегруженная функция.

Отправляет содержимое массива байтов data по адресу, указанному в request.

QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)

Это перегруженная функция.

Отправляет содержимое сообщения multiPart по адресу, указанному в request.

Это может быть использовано для отправки сообщений MIME multipart по HTTP.

Эта функция была добавлена в Qt 4.8.

См. также QHttpMultiPart, QHttpPart и put().

QNetworkProxy QNetworkAccessManager::proxy() const

Возвращает QNetworkProxy, который будут использовать запросы, отправленные с помощью этого объекта QNetworkAccessManager. Значение по умолчанию для прокси-сервера — QNetworkProxy::DefaultProxy.

См. также setProxy(), setProxyFactory() и proxyAuthenticationRequired().

QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const

Возвращает фабрику прокси-серверов, используемую этим объектом QNetworkAccessManager для определения прокси-серверов, которые будут использоваться для запросов.

Обратите внимание, что указатель, возвращаемый этой функцией, управляется QNetworkAccessManager и может быть удалён в любое время.

Эта функция была добавлена в Qt 4.5.

См. также setProxyFactory() и proxy().

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)

Загружает содержимое data по адресу request и возвращает новый объект QNetworkReply, который будет открыт для ответа.

data должен быть открыт для чтения при вызове этой функции и должен оставаться валидным до тех пор, пока для этого ответа не будет излучен сигнал finished().

Будет ли доступно содержимое для чтения из возвращенного объекта, зависит от протокола. Для HTTP сервер может отправить небольшую HTML-страницу, указывающую на успешность (или неудачу) загрузки. В других протоколах в ответах, скорее всего, будет содержимое.

Примечание: Для HTTP этот запрос отправит PUT-запрос, который большинство серверов не поддерживают. Механизмы загрузки форм, в том числе загрузка файлов через HTML-формы, используют механизм POST.

См. также get(), post(), deleteResource() и sendCustomRequest().

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)

Это перегруженная функция.

Отправляет содержимое массива байтов data по адресу, указанному в request.

QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)

Это перегруженная функция.

Отправляет содержимое сообщения multiPart по адресу, указанному в request.

Это может быть использовано для отправки сообщений MIME multipart по HTTP.

Эта функция была добавлена в Qt 4.8.

См. также QHttpMultiPart, QHttpPart и post().

QNetworkRequest::RedirectPolicy QNetworkAccessManager::redirectPolicy() const

Возвращает политику перенаправления, используемую при создании новых запросов.

Эта функция была добавлена в Qt 5.9.

См. также setRedirectPolicy() и QNetworkRequest::RedirectPolicy.

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)

Отправляет пользовательский запрос на сервер, идентифицированный URL-адресом в request.

Пользователь отвечает за отправку verb серверу в соответствии со спецификацией HTTP.

Этот метод предоставляет средства для отправки глаголов, отличных от общих, предоставляемых с помощью get() или post() и т. д., например, для отправки команды HTTP OPTIONS.

Если data не пусто, содержимое устройства data будет загружено на сервер; в этом случае data должен быть открыт для чтения и должен оставаться валидным до тех пор, пока для данного ответа не будет излучен сигнал finished().

Примечание: Эта функция в настоящее время доступна только для HTTP(S).

Эта функция была добавлена в Qt 4.7.

См. также get(), post(), put() и deleteResource().

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)

Это перегруженный метод.

Отправляет содержимое массива байтов data по адресу, указанному в request.

Этот метод был добавлен в Qt 5.8.

QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)

Это перегруженный метод.

Отправляет пользовательский запрос на сервер, идентифицированный URL-адресом в request.

Отправляет содержимое сообщения multiPart по адресу, указанному в request.

Можно использовать для отправки сообщений MIME multipart для пользовательских глаголов.

Этот метод был добавлен в Qt 5.8.

См. также QHttpMultiPart, QHttpPart и put().

void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)

Включает или отключает автоматическое удаление QNetworkReplies.

Установка shouldAutoDelete в true эквивалентна установке атрибута QNetworkRequest::AutoDeleteReplyOnFinishAttribute в true для всех будущих QNetworkRequests, переданных в этот экземпляр QNetworkAccessManager, за исключением случаев, когда этот атрибут был явно установлен для QNetworkRequest.

Этот метод был добавлен в Qt 5.14.

См. также autoDeleteReplies и QNetworkRequest::AutoDeleteReplyOnFinishAttribute.

void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)

Устанавливает сетевой кэш менеджера в указанный cache. Кэш используется для всех запросов, отправленных менеджером.

Используйте эту функцию для установки объекта сетевого кэша в класс, реализующий дополнительные функции, например, сохранение файлов cookie в постоянном хранилище.

Примечание: QNetworkAccessManager принимает на себя ответственность за объект cache.

QNetworkAccessManager по умолчанию не имеет установленного кэша. Qt предоставляет простой дисковый кэш QNetworkDiskCache, который можно использовать.

Этот метод был добавлен в Qt 4.5.

См. также cache() и QNetworkRequest::CacheLoadControl.

void QNetworkAccessManager::setConfiguration(const QNetworkConfiguration &config)

Устанавливает сетевую конфигурацию, которая будет использоваться при создании сетевого сеанса, в config.

Сетевая конфигурация используется для создания и открытия сетевого сеанса перед обработкой любого запроса, требующего сетевого доступа. Если сетевая конфигурация не установлена явно с помощью этой функции, будет использоваться сетевая конфигурация, возвращаемая QNetworkConfigurationManager::defaultConfiguration().

Для восстановления значения по умолчанию установите сетевую конфигурацию в значение, возвращаемое QNetworkConfigurationManager::defaultConfiguration().

Установка сетевой конфигурации означает, что экземпляр QNetworkAccessManager будет использовать только указанную конфигурацию. В частности, если конфигурация сетевого доступа по умолчанию меняется (например, при подключении к Wi-Fi), эту новую конфигурацию необходимо включить вручную, если это требуется.

Если установлена недействительная сетевая конфигурация, сетевой сеанс не будет создан. В этом случае сетевые запросы будут обрабатываться независимо, но могут завершиться ошибкой. Например:

QNetworkConfigurationManager manager;
networkAccessManager->setConfiguration(manager.defaultConfiguration());

Этот метод был добавлен в Qt 4.7.

См. также configuration() и QNetworkSession.

void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)

Устанавливает cookie-журнал менеджера в указанный cookieJar. Cookie-журнал используется всеми запросами, отправленными менеджером.

Используйте эту функцию для установки объекта cookie-журнала в класс, реализующий дополнительные функции, такие как сохранение cookie в постоянном хранилище.

Примечание: QNetworkAccessManager принимает на себя ответственность за объект cookieJar.

Если cookieJar находится в том же потоке, что и этот QNetworkAccessManager, он установит родителя для cookieJar, так что cookie-журнал будет удален при удалении этого объекта. Если вы хотите использовать cookie-журналы в разных объектах QNetworkAccessManager, вы можете установить родителя cookie-журнала в 0 после вызова этой функции.

QNetworkAccessManager по умолчанию не реализует никакой собственной политики cookie: он принимает все cookie, отправленные сервером, при условии, что они имеют правильный формат и соответствуют минимальным требованиям безопасности (область cookie соответствует области запроса и путь cookie соответствует пути запроса). Чтобы реализовать собственную политику безопасности, переопределите виртуальные функции QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl(). Эти функции вызываются QNetworkAccessManager при обнаружении нового cookie.

См. также cookieJar(), QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl().

void QNetworkAccessManager::setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible)

Переопределяет сообщаемую доступность сети. Если accessible равен NotAccessible, сообщаемая доступность сети всегда будет NotAccessible. В противном случае сообщаемая доступность сети будет отражать фактическое состояние устройства.

Этот метод был добавлен в Qt 4.7.

Примечание: Метод-сеттер для свойства networkAccessible.

См. также networkAccessible().

void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)

Устанавливает прокси, который будет использоваться в будущих запросах, в proxy. Это не влияет на запросы, которые уже отправлены. Сигнал proxyAuthenticationRequired() будет отправлен, если прокси запросит аутентификацию.

Прокси, установленный с помощью этой функции, будет использоваться для всех запросов, отправленных QNetworkAccessManager. В некоторых случаях может потребоваться выбрать разные прокси в зависимости от типа отправляемого запроса или целевого хоста. В этом случае следует использовать setProxyFactory().

См. также proxy() и proxyAuthenticationRequired().

void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)

Устанавливает фабрику прокси для этого класса в factory. Фабрика прокси используется для определения более специфического списка прокси, которые будут использоваться для данного запроса, вместо попытки использовать одно и то же значение прокси для всех запросов.

Все запросы, отправленные QNetworkAccessManager, будут иметь тип QNetworkProxyQuery::UrlRequest.

Например, фабрика прокси может применять следующие правила:

  • если целевой адрес находится в локальной сети (например, если имя хоста не содержит точек или это IP-адрес в диапазоне организации), вернуть QNetworkProxy::NoProxy
  • если запрос FTP, вернуть прокси FTP
  • если запрос HTTP или HTTPS, вернуть прокси HTTP
  • в противном случае вернуть сервер прокси SOCKSv5

Срок службы объекта factory будет управляться QNetworkAccessManager. Он удалит объект при необходимости.

Примечание: Если конкретный прокси установлен с помощью setProxy(), фабрика не будет использоваться.

Этот метод был добавлен в Qt 4.5.

См. также proxyFactory(), setProxy() и QNetworkProxyQuery.

void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)

Устанавливает политику перенаправления менеджера в указанную policy. Эта политика будет влиять на все последующие запросы, созданные менеджером.

Используйте эту функцию для включения или отключения HTTP-перенаправлений на уровне менеджера.

Примечание: При создании запроса QNetworkRequest::RedirectAttributePolicy имеет наивысший приоритет, затем — QNetworkRequest::FollowRedirectsAttribute. Наконец, политика менеджера имеет наименьший приоритет.

Для обеспечения обратной совместимости значение по умолчанию — QNetworkRequest::ManualRedirectPolicy. В будущем это может измениться, и какое-то значение политики автоматического перенаправления станет значением по умолчанию; клиентам, использующим обработку ручных перенаправлений, рекомендуется явно задавать эту политику в своём коде.

Эта функция была добавлена в Qt 5.9.

См. также redirectPolicy(), QNetworkRequest::RedirectPolicy и QNetworkRequest::FollowRedirectsAttribute.

void QNetworkAccessManager::setStrictTransportSecurityEnabled(bool enabled)

Если enabled равно true, QNetworkAccessManager следует политике HTTP Strict Transport Security (HSTS, RFC6797). При обработке запроса QNetworkAccessManager автоматически заменяет схему «http» на «https» и использует безопасный транспорт для хостов HSTS. Если это явно установлено, порт 80 заменяется на порт 443.

При включённой HSTS для каждого HTTP-ответа, содержащего заголовок HSTS и полученного по защищённому каналу, QNetworkAccessManager обновит свой кэш HSTS, запомнив хост с действительной политикой или удалив хост с истекшей или отключённой политикой HSTS.

Эта функция была добавлена в Qt 5.9.

См. также isStrictTransportSecurityEnabled().

QVector<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const

Возвращает список политик HTTP Strict Transport Security. Этот список может отличаться от первоначально заданного через addStrictTransportSecurityHosts(), если кэш HSTS был обновлён из заголовка ответа «Strict-Transport-Security».

Эта функция была добавлена в Qt 5.9.

См. также addStrictTransportSecurityHosts() и QHstsPolicy.

QStringList QNetworkAccessManager::supportedSchemes() const

Перечисляет все схемы URL, поддерживаемые менеджером доступа.

Эта функция была добавлена в Qt 5.2.

См. также supportedSchemesImplementation().

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

Spec-Zone.ru

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