Класс QNetworkAccessManager
Класс QNetworkAccessManager позволяет приложению отправлять сетевые запросы и получать ответы. Подробнее...
| Заголовок: | #include <QNetworkAccessManager> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются повторно входящими.
Типы public
| Перечисление | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
Public Функции
| QNetworkAccessManager(QObject *parent = nullptr) | |
| virtual | ~QNetworkAccessManager() |
| void | addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts) |
| bool | autoDeleteReplies() const |
| QAbstractNetworkCache * | cache() const |
| void | clearAccessCache() |
| void | clearConnectionCache() |
| 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 |
| 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 | setCookieJar(QNetworkCookieJar *cookieJar) |
| void | setProxy(const QNetworkProxy &proxy) |
| void | setProxyFactory(QNetworkProxyFactory *factory) |
| void | setRedirectPolicy(QNetworkRequest::RedirectPolicy policy) |
| void | setStrictTransportSecurityEnabled(bool enabled) |
| void | setTransferTimeout(int timeout = QNetworkRequest::DefaultTransferTimeoutConstant) |
| QList<QHstsPolicy> | strictTransportSecurityHosts() const |
| virtual QStringList | supportedSchemes() const |
| int | transferTimeout() const |
Сигналы
| void | authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator) |
| void | encrypted(QNetworkReply *reply) |
| void | finished(QNetworkReply *reply) |
| void | preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator) |
| void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
| void | sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) |
Protected Functions
| virtual QNetworkReply * | createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr) |
Detailed Description
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, &QNetworkReply::errorOccurred,
this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
this, &MyClass::slotSslErrors); См. также QNetworkRequest, QNetworkReply и QNetworkProxy.
Документация по типам членов
enum 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()) |
См. также QNetworkReply::operation().
Документация по функциям членов
QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)
Конструктор объекта QNetworkAccessManager, который является центром API доступа к сети, и устанавливает parent как родительский объект.
void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
Этот сигнал испускается всякий раз, когда конечный сервер требует аутентификации перед предоставлением запрошенного содержимого. Подключенный к этому сигналу слот должен заполнить учетные данные для содержимого (которые можно определить, просмотрев объект reply) в объекте authenticator.
QNetworkAccessManager будет кэшировать учетные данные и будет отправлять те же значения, если сервер снова потребует аутентификации, не испуская сигнала authenticationRequired(). Если он отклонит учетные данные, этот сигнал будет выпущен снова.
Примечание: Чтобы запрос не отправлял учетные данные, не вызывайте setUser() или setPassword() для объекта authenticator. В результате сигнал finished() будет выпущен с объектом QNetworkReply с ошибкой AuthenticationRequiredError.
Примечание: Невозможно использовать QueuedConnection для подключения к этому сигналу, так как подключение завершится неудачей, если объект authenticator не был заполнен новой информацией, когда сигнал возвращается.
См. также proxyAuthenticationRequired(), QAuthenticator::setUser() и QAuthenticator::setPassword().
void QNetworkAccessManager::encrypted(QNetworkReply *reply)
Этот сигнал испускается, когда сеанс SSL/TLS успешно завершил первоначальный обмен данными. На этом этапе не было передано никаких пользовательских данных. Сигнал может использоваться для выполнения дополнительных проверок цепочки сертификатов, например, для уведомления пользователей, когда изменился сертификат веб-сайта. Параметр reply указывает, какой сетевой ответ отвечает за это. Если ответ не соответствует ожидаемым критериям, его следует прервать, вызвав QNetworkReply::abort() в слоте, подключенном к этому сигналу. Настройки SSL, используемые в данный момент, можно проверить с помощью метода QNetworkReply::sslConfiguration().
Внутренне, QNetworkAccessManager может открывать несколько подключений к серверу, чтобы позволить обрабатывать запросы параллельно. Эти подключения могут быть повторно использованы, что означает, что сигнал encrypted() не будет испущен. Это означает, что вы гарантированно получите этот сигнал только для первого подключения к сайту в течение срока службы QNetworkAccessManager.
Эта функция была введена в Qt 5.1.
См. также QSslSocket::encrypted() и QNetworkReply::encrypted().
void QNetworkAccessManager::finished(QNetworkReply *reply)
Этот сигнал испускается всякий раз, когда завершается ожидающий сетевой ответ. Параметр reply будет содержать указатель на ответ, который только что завершился. Этот сигнал испускается вместе с сигналом QNetworkReply::finished().
См. QNetworkReply::finished() для получения информации о состоянии, в котором будет находиться объект.
Примечание: Не удаляйте объект reply в слоте, подключенном к этому сигналу. Используйте deleteLater().
См. также QNetworkReply::finished() и QNetworkReply::error().
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().
[virtual] QNetworkAccessManager::~QNetworkAccessManager()
Удаляет объект QNetworkAccessManager и освобождает все ресурсы. Обратите внимание, что объекты QNetworkReply, возвращаемые этим классом, имеют этот объект в качестве родительского, что означает, что они будут удалены вместе с ним, если вы не вызовете QObject::setParent() для них.
[since 5.9] void QNetworkAccessManager::addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)
Добавляет политики HTTP Strict Transport Security в кэш HSTS. knownHosts содержит известные хосты с информацией QHstsPolicy.
Примечание: Истекшая политика удалит известный хост из кэша, если он там был.
Примечание: При обработке HTTP-ответов QNetworkAccessManager также может обновлять кэш HSTS, удаляя или обновляя существующие политики или вводя новые knownHosts. Таким образом, текущая реализация основана на сервере; код клиента может предоставить QNetworkAccessManager с ранее известными или обнаруженными политиками, но эта информация может быть переопределена заголовками ответа "Strict-Transport-Security".
Эта функция была добавлена в Qt 5.9.
См. также addStrictTransportSecurityHosts(), enableStrictTransportSecurityStore() и QHstsPolicy.
[since 5.14] bool QNetworkAccessManager::autoDeleteReplies() const
Возвращает true, если QNetworkAccessManager в настоящее время настроен на автоматическое удаление QNetworkReplies, в противном случае — false.
Эта функция была добавлена в Qt 5.14.
См. также setAutoDeleteReplies и QNetworkRequest::AutoDeleteReplyOnFinishAttribute.
QAbstractNetworkCache *QNetworkAccessManager::cache() const
Возвращает кэш, используемый для хранения данных, полученных из сети.
См. также setCache().
[since 5.0] void QNetworkAccessManager::clearAccessCache()
Очищает внутренний кэш данных аутентификации и сетевых подключений.
Эта функция полезна для проведения автоматических тестов.
Эта функция была добавлена в Qt 5.0.
См. также clearConnectionCache().
[since 5.9] void QNetworkAccessManager::clearConnectionCache()
Очищает внутренний кэш сетевых подключений. В отличие от clearAccessCache(), данные аутентификации сохраняются.
Эта функция была добавлена в Qt 5.9.
См. также clearAccessCache().
[since 5.2] void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)
Инициализирует соединение с хостом, заданным hostName на порту port. Эта функция полезна для завершения TCP-рукопожатия с хостом перед отправкой HTTP-запроса, что приводит к снижению сетевой задержки.
Примечание: Эта функция не имеет возможности сообщать об ошибках.
Эта функция была добавлена в Qt 5.2.
См. также connectToHostEncrypted(), get(), post(), put() и deleteResource().
[since 5.2] void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
Инициализирует соединение с хостом, заданным hostName на порту port, используя sslConfiguration. Эта функция полезна для завершения TCP- и SSL-рукопожатия с хостом перед отправкой HTTPS-запроса, что приводит к снижению сетевой задержки.
Примечание: Предварительное подключение соединения HTTP/2 можно выполнить, вызвав setAllowedNextProtocols() на sslConfiguration с QSslConfiguration::ALPNProtocolHTTP2, содержащимся в списке разрешенных протоколов. При использовании HTTP/2 одного соединения на хост достаточно, т.е. вызов этого метода несколько раз на один хост не приведет к более быстрому выполнению сетевых операций.
Примечание: Эта функция не имеет возможности сообщать об ошибках.
Эта функция была добавлена в Qt 5.2.
См. также connectToHost(), get(), post(), put() и deleteResource().
[since 5.13] void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
Это перегруженный метод.
Инициализирует соединение с хостом, заданным hostName на порту port, используя sslConfiguration, при этом peerName задается как имя хоста, используемого для проверки сертификата. Эта функция полезна для завершения TCP- и SSL-рукопожатия с хостом перед отправкой HTTPS-запроса, что приводит к снижению сетевой задержки.
Примечание: Предварительное подключение соединения HTTP/2 можно выполнить, вызвав setAllowedNextProtocols() на sslConfiguration с QSslConfiguration::ALPNProtocolHTTP2, содержащимся в списке разрешенных протоколов. При использовании HTTP/2 одного соединения на хост достаточно, т.е. вызов этого метода несколько раз на один хост не приведет к более быстрому выполнению сетевых операций.
Примечание: Эта функция не имеет возможности сообщать об ошибках.
Эта функция была добавлена в Qt 5.13.
См. также connectToHost(), get(), post(), put() и deleteResource().
QNetworkCookieJar *QNetworkAccessManager::cookieJar() const
Возвращает QNetworkCookieJar, используемый для хранения куки, полученных из сети, а также куки, которые собираются отправлять.
См. также setCookieJar().
END_OF_DOCUMENT_MARKER
[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(), для получения куки, которые будут отправлены удалённому серверу.
Возвращаемый объект должен быть в открытом состоянии.
QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)
Отправляет запрос на удаление ресурса, идентифицированного URL из request.
Примечание: Эта функция в настоящее время доступна только для HTTP, выполняя запрос HTTP DELETE.
См. также get(), post(), put() и sendCustomRequest().
[since 5.10] 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).
[since 5.9] bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const
Возвращает true, если HTTP Strict Transport Security (HSTS) был включён. По умолчанию HSTS отключён.
Функция была добавлена в Qt 5.9.
См. также setStrictTransportSecurityEnabled().
[since 5.10] bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const
Возвращает true, если кэш HSTS использует постоянное хранилище для загрузки и сохранения политик HSTS.
Функция была добавлена в Qt 5.10.
См. также enableStrictTransportSecurityStore().
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.
См. также QHttpMultiPart, QHttpPart и put().
QNetworkProxy QNetworkAccessManager::proxy() const
Возвращает QNetworkProxy, который будут использовать запросы, отправленные с помощью этого объекта QNetworkAccessManager. Значение по умолчанию для прокси - QNetworkProxy::DefaultProxy.
См. также setProxy(), setProxyFactory() и proxyAuthenticationRequired().
QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const
Возвращает фабрику прокси, которую использует этот объект QNetworkAccessManager для определения прокси, которые будут использоваться для запросов.
Обратите внимание, что указатель, возвращаемый этой функцией, управляется QNetworkAccessManager и может быть удалён в любой момент.
См. также 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.
См. также QHttpMultiPart, QHttpPart и post().
[since 5.9] 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).
См. также get(), post(), put() и deleteResource().
[since 5.8] QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
Это перегруженная функция.
Отправляет содержимое массива байтов data в пункт назначения, указанный в request.
Эта функция была добавлена в Qt 5.8.
[since 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().
[since 5.14] 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. Кэш используется для всех запросов, отправленных менеджером.
Используйте эту функцию для установки объекта сетевого кэша в класс, реализующий дополнительные функции, такие как сохранение куки в постоянном хранилище.
Примечание: QNetworkAccessManager принимает владение объектом cache.
QNetworkAccessManager по умолчанию не имеет установленного кэша. Qt предоставляет простой дисковый кэш QNetworkDiskCache, который можно использовать.
См. также cache() и QNetworkRequest::CacheLoadControl.
void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)
Устанавливает контейнер куки менеджера на указанный cookieJar. Контейнер куки используется всеми запросами, отправленными менеджером.
Используйте эту функцию для установки объекта контейнера куки в класс, реализующий дополнительные функции, такие как сохранение куки в постоянном хранилище.
Примечание: QNetworkAccessManager принимает владение объектом cookieJar.
Если cookieJar находится в той же нити, что и этот QNetworkAccessManager, он установит родительский элемент для cookieJar, чтобы контейнер куки был удален при удалении этого объекта. Если вы хотите использовать контейнеры куки для разных объектов QNetworkAccessManager, вы можете установить родителя контейнера куки в 0 после вызова этой функции.
QNetworkAccessManager по умолчанию не реализует собственной политики куки: он принимает все куки, отправленные сервером, при условии, что они правильно сформированы и соответствуют минимальным требованиям безопасности (домен куки соответствует домену запроса, а путь куки соответствует пути запроса). Для реализации собственной политики безопасности переопределите виртуальные функции QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl(). Эти функции вызываются QNetworkAccessManager при обнаружении новой куки.
См. также cookieJar(), QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl().
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(), фабрика не будет использоваться.
См. также proxyFactory(), setProxy() и QNetworkProxyQuery.
[since 5.9] void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
Устанавливает политику перенаправления менеджера на указанную policy. Эта политика будет влиять на все последующие запросы, созданные менеджером.
Используйте эту функцию для включения или отключения HTTP перенаправлений на уровне менеджера.
Примечание: При создании запроса QNetworkRequest::RedirectAttributePolicy имеет наивысший приоритет, далее по приоритету политика менеджера.
Значение по умолчанию — QNetworkRequest::NoLessSafeRedirectPolicy. Клиентам, использующим ручное управление перенаправлениями, рекомендуется явно установить эту политику в своём коде.
Эта функция была добавлена в Qt 5.9.
См. также redirectPolicy() и QNetworkRequest::RedirectPolicy.
[since 5.9] 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().
[since 5.15] void QNetworkAccessManager::setTransferTimeout(int timeout = QNetworkRequest::DefaultTransferTimeoutConstant)
Устанавливает timeout в качестве таймаута передачи в миллисекундах.
Передачи прерываются, если за время таймаута не передано ни одного байта. Ноль означает, что таймер не установлен. Если аргумент не указан, таймаут равен QNetworkRequest::DefaultTransferTimeoutConstant. Если эта функция не вызвана, таймаут отключен и имеет значение ноль. Временные ограничения, установленные для отдельных запросов, переопределяют это значение. Это означает, что если в QNetworkAccessManager включён таймаут, его нужно отключить, чтобы выполнить запрос без таймаута.
Данная функция была добавлена в Qt 5.15.
См. также transferTimeout().
[since 5.9] QList<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const
Возвращает список политик HTTP Strict Transport Security. Этот список может отличаться от первоначального значения, установленного с помощью addStrictTransportSecurityHosts(), если кэш HSTS был обновлён из заголовка ответа "Strict-Transport-Security".
Данная функция была добавлена в Qt 5.9.
См. также addStrictTransportSecurityHosts() и QHstsPolicy.
[virtual, since 5.2] QStringList QNetworkAccessManager::supportedSchemes() const
Выводит список всех схем URL, поддерживаемых менеджером доступа.
Переопределите этот метод в подклассе QNetworkAccessManager, чтобы указать собственные поддерживаемые схемы. Это необходимо, например, когда ваш подкласс поддерживает новые протоколы.
Данная функция была добавлена в Qt 5.2.
[since 5.15] int QNetworkAccessManager::transferTimeout() const
Возвращает таймаут передачи в миллисекундах.
Этот таймаут равен нулю, если setTransferTimeout() не был вызван, что означает, что таймаут не используется.
Данная функция была добавлена в Qt 5.15.
См. также setTransferTimeout().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qnetworkaccessmanager.html