Класс QNetworkAccessManager
Класс QNetworkAccessManager позволяет приложению отправлять сетевые запросы и получать ответы Подробнее...
| Заголовок: | #include <QNetworkAccessManager> |
| qmake: | QT += network |
| С версии: | Qt 4.4 |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| enum | NetworkAccessibility { UnknownAccessibility, NotAccessible, Accessible } |
| enum | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
Свойства
- networkAccessible : NetworkAccessibility
- 1 свойство унаследовано от QObject
Открытые функции
| QNetworkAccessManager(QObject *parent = Q_NULLPTR) | |
| ~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()) |
| QNetworkCookieJar * | cookieJar() const |
| QNetworkReply * | deleteResource(const QNetworkRequest &request) |
| QNetworkReply * | get(const QNetworkRequest &request) |
| QNetworkReply * | head(const QNetworkRequest &request) |
| bool | isStrictTransportSecurityEnabled() const |
| 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 = Q_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(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 |
- 32 открытые функции унаследованы от QObject
Сигналы
| 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) |
- 2 сигнала унаследованы от QObject
Защищенные функции
| virtual QNetworkReply * | createRequest(Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = Q_NULLPTR) |
- 9 защищенных функций унаследованы от QObject
Защищенные слоты
| QStringList | supportedSchemesImplementation() const |
Дополнительные унаследованные члены
Подробное описание
Класс QNetworkAccessManager позволяет приложению отправлять сетевые запросы и получать ответы
API доступа к сети построен вокруг одного объекта QNetworkAccessManager, который содержит общую конфигурацию и настройки для отправляемых им запросов. Он содержит конфигурацию прокси и кэша, а также сигналы, относящиеся к таким проблемам, и сигналы ответов, которые могут использоваться для отслеживания прогресса сетевой операции. Для всего приложения Qt должен быть достаточно один объект QNetworkAccessManager.
После создания объекта QNetworkAccessManager, приложение может использовать его для отправки запросов по сети. Предоставляется группа стандартных функций, которые принимают запрос и необязательные данные, и каждая возвращает объект QNetworkReply. Возвращаемый объект используется для получения любых данных, возвращенных в ответ на соответствующий запрос.
Простой загрузкой из сети можно добиться с помощью:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
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, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(slotSslErrors(QList<QSslError>))); Поддержка сети и роуминга
С добавлением API управления несущими (Bearer Management) в 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().
END_OF_DOCUMENT_MARKERДокументация по свойствам
networkAccessible : NetworkAccessibility
Это свойство указывает, доступна ли сеть в данный момент через этот менеджер сетевого доступа.
Если сеть не доступна, менеджер сетевого доступа не будет обрабатывать новые сетевые запросы; все такие запросы завершатся ошибкой. Запросы с URL-адресами со схемой file:// все же будут обработаны.
По умолчанию значение этого свойства отражает физическое состояние устройства. Приложения могут переопределить его, чтобы отключить все сетевые запросы через этот менеджер сетевого доступа, вызвав
networkAccessManager->setNetworkAccessible(QNetworkAccessManager::NotAccessible);
Сетевые запросы можно снова включить, и это свойство вернётся к отображению фактического состояния устройства, вызвав
networkAccessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
Примечание: Вызов setNetworkAccessible() не изменяет состояние сети.
Это свойство было введено в Qt 4.7.
Функции доступа:
| NetworkAccessibility | networkAccessible() const |
| void | setNetworkAccessible(NetworkAccessibility accessible) |
Сигнал уведомления:
| void | networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible) |
Документация по членам-функциям
QNetworkAccessManager::QNetworkAccessManager(QObject *parent = Q_NULLPTR)
Создает объект QNetworkAccessManager, который является центром API сетевого доступа, и устанавливает parent в качестве родительского объекта.
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.
Примечание: Истекшая политика удалит известный хост из кэша, если он был ранее присутствовал.
Примечание: При обработке HTTP-ответов QNetworkAccessManager также может обновлять кэш HSTS, удаляя или обновляя существующие политики или вводя новые knownHosts. Таким образом, текущая реализация управляется сервером; код клиента может предоставить QNetworkAccessManager ранее известные или обнаруженные политики, но эта информация может быть переопределена заголовками ответа «Strict-Transport-Security».
Эта функция была введена в Qt 5.9.
См. также addStrictTransportSecurityHosts() и QHstsPolicy.
[signal] void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
Этот сигнал генерируется всякий раз, когда конечный сервер запрашивает аутентификацию перед передачей запрошенного содержимого. Метод, подключенный к этому сигналу, должен заполнить данные для содержимого (которые можно определить, просмотрев объект reply) в объекте authenticator.
QNetworkAccessManager кэширует данные аутентификации и будет отправлять те же значения, если сервер снова запросит аутентификацию, не генерируя сигнал authenticationRequired(). Если данные аутентификации отклонены, этот сигнал будет сгенерирован повторно.
Примечание: Чтобы не отправлять данные аутентификации, не вызывайте setUser() или setPassword() в объекте authenticator. Это приведёт к тому, что сигнал finished() будет сгенерирован с объектом QNetworkReply и ошибкой AuthenticationRequiredError.
Примечание: Использовать QueuedConnection для подключения к этому сигналу невозможно, так как подключение завершится ошибкой, если аутентификатор не заполнится новой информацией при возврате сигнала.
См. также proxyAuthenticationRequired(), QAuthenticator::setUser() и QAuthenticator::setPassword().
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().
QNetworkCookieJar *QNetworkAccessManager::cookieJar() const
Возвращает QNetworkCookieJar, используемый для хранения cookie, полученных из сети, а также cookie, которые будут отправлены.
См. также setCookieJar().
[virtual protected] QNetworkReply *QNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = Q_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().
[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().
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().
NetworkAccessibility QNetworkAccessManager::networkAccessible() const
Возвращает текущую доступность сети.
Эта функция была добавлена в Qt 4.7.
Примечание: Функция-получатель для свойства networkAccessible.
См. также setNetworkAccessible().
[signal] void QNetworkAccessManager::networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)
Этот сигнал испускается при изменении значения свойства networkAccessible. accessible — новая доступность сети.
Примечание: Сигнал-уведомление для свойства networkAccessible.
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().
[signal] void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
Этот сигнал испускается, если обмен SSL/TLS согласуется с шифрованием PSK, и поэтому требуется аутентификация PSK. Объект reply — это QNetworkReply, который согласовывает такие шифрования.
При использовании PSK клиент должен отправить серверу действительный идентификатор и действительный предварительно согласованный ключ, чтобы SSL-обмен продолжился. Приложения могут предоставить эту информацию в слоте, подключённом к этому сигналу, заполнив переданный объект authenticator в соответствии со своими потребностями.
Примечание: Игнорирование этого сигнала или невозможность предоставить необходимые учетные данные приведут к сбою обмена, а следовательно, к прерыванию подключения.
Примечание: Объект authenticator принадлежит ответу и не должен быть удалён приложением.
Эта функция была добавлена в Qt 5.5.
См. также QSslPreSharedKeyAuthenticator.
QNetworkProxy QNetworkAccessManager::proxy() const
Возвращает QNetworkProxy, которую будут использовать запросы, отправленные с помощью этого объекта QNetworkAccessManager. Значение прокси по умолчанию — QNetworkProxy::DefaultProxy.
См. также setProxy(), setProxyFactory() и proxyAuthenticationRequired().
[signal] void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
Этот сигнал испускается всякий раз, когда прокси запрашивает аутентификацию, и QNetworkAccessManager не может найти действительные, кэшированные учетные данные. Слот, подключенный к этому сигналу, должен заполнить учетные данные для прокси proxy в объекте authenticator.
QNetworkAccessManager будет кэшировать учетные данные внутри. В следующий раз, когда прокси запрашивает аутентификацию, QNetworkAccessManager автоматически отправит те же учетные данные, не испуская сигнал proxyAuthenticationRequired повторно.
Если прокси отклонит учетные данные, QNetworkAccessManager снова испустит сигнал.
См. также proxy(), setProxy() и authenticationRequired().
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 = Q_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), эта новая конфигурация должна быть включена вручную, если это необходимо.
QNetworkConfigurationManager manager; networkAccessManager->setConfiguration(manager.defaultConfiguration());
Если задана некорректная конфигурация сети, сессия сети не будет создана. В этом случае запросы сети будут обработаны независимо, но могут завершиться ошибкой. Например:
networkAccessManager->setConfiguration(QNetworkConfiguration());
Эта функция была добавлена в Qt 4.7.
См. также configuration() и QNetworkSession.
void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)
Устанавливает хранилище cookie менеджера в указанное cookieJar. Хранилище cookie используется всеми запросами, отправленными менеджером.
Используйте эту функцию для установки объекта хранилища cookie в класс, реализующий дополнительные функции, такие как сохранение cookie в постоянное хранилище.
Примечание: QNetworkAccessManager принимает владение объектом cookieJar.
Если cookieJar находится в том же потоке, что и этот QNetworkAccessManager, он установит родителя cookieJar, чтобы куки-хранилище было удалено при удалении этого объекта. Если вы хотите использовать куки-хранилища совместно между разными объектами QNetworkAccessManager, вам может потребоваться установить родителя куки-хранилища в 0 после вызова этой функции.
QNetworkAccessManager по умолчанию не реализует собственной политики куки: он принимает все куки, отправленные сервером, если они правильно сформированы и соответствуют минимальным требованиям безопасности (домен куки совпадает с доменом запроса и путь куки совпадает с путем запроса). Для реализации собственной политики безопасности переопределите виртуальные функции QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl(). Эти функции вызываются QNetworkAccessManager при обнаружении нового куки.
См. также cookieJar(), QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl().
void QNetworkAccessManager::setNetworkAccessible(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().
[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().
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().
[protected slot] QStringList QNetworkAccessManager::supportedSchemesImplementation() const
Список всех схем URL, поддерживаемых менеджером доступа.
Вы не должны вызывать эту функцию напрямую; используйте QNetworkAccessManager::supportedSchemes() вместо этого.
Переопределите этот слот для предоставления собственных поддерживаемых схем в подклассе QNetworkAccessManager. Это необходимо, например, когда ваш подкласс поддерживает новые протоколы.
Из-за ограничений бинарной совместимости метод supportedSchemes() (добавлено в Qt 5.2) не является виртуальным. Вместо этого supportedSchemes() динамически обнаруживает и вызывает этот слот.
Эта функция была добавлена в Qt 5.2.
См. также supportedSchemes().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qnetworkaccessmanager.html