Класс 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) |
| 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 | 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, который содержит общие настройки и параметры для отправляемых им запросов. Он включает конфигурацию прокси и кеша, а также сигналы, связанные с такими вопросами, и сигналы ответа, которые могут использоваться для отслеживания прогресса сетевой операции. Один экземпляр QNetworkAccessManager должен быть достаточным для всего приложения Qt. Поскольку 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().
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.
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, который используется для хранения полученных из сети куки, а также куки, которые собираются отправлять.
См. также 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 jar, установленном с помощью setCookieJar(), чтобы получить куки, которые будут отправлены на удалённый сервер.
Возвращаемый объект должен быть в открытом состоянии.
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 Tranport Security. По умолчанию постоянное хранилище политик HSTS отключено.
Эта функция была добавлена в Qt 5.10.
См. также 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::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), эта новая конфигурация должна быть включена вручную, если это необходимо.
Если установлена недействительная сетевая конфигурация, сетевая сессия не будет создана. В этом случае сетевые запросы будут обработаны независимо, но могут завершиться сбоем. Например:
Эта функция была добавлена в 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.13/qnetworkaccessmanager.html