Класс QNetworkAccessManager
Класс QNetworkAccessManager позволяет приложению отправлять сетевые запросы и получать ответы. Подробнее...
| Заголовок: | #include <QNetworkAccessManager> |
| qmake: | QT += network |
| С момента: | Qt 4.4 |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| Перечисление | NetworkAccessibility { UnknownAccessibility, NotAccessible, Accessible } |
| Перечисление | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
Свойства
- networkAccessible : NetworkAccessibility
- 1 свойство унаследовано от QObject
Открытые функции
| 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()) |
| 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 |
- 34 открытых функции унаследованы от 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(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr) |
- 9 защищённых функций унаследованы от QObject
Защищённые слоты
| QStringList | supportedSchemesImplementation() const |
Дополнительные унаследованные члены
- 1 публичный слот унаследован от QObject
- 1 публичная переменная унаследована от QObject
- 10 статических публичных членов унаследованы от QObject
- 2 защищённые переменные унаследованы от QObject
Подробное описание
Класс QNetworkAccessManager позволяет приложению отправлять запросы к сети и получать ответы.
API доступа к сети построен вокруг одного объекта QNetworkAccessManager, который хранит общую конфигурацию и настройки для запросов, которые он отправляет. Он содержит конфигурацию прокси и кэша, а также сигналы, связанные с такими проблемами, и сигналы ответа, которые можно использовать для отслеживания прогресса сетевой операции. Один экземпляр QNetworkAccessManager должен быть достаточно для всего приложения Qt. Поскольку QNetworkAccessManager основан на QObject, его можно использовать только из потока, к которому он принадлежит.
После создания объекта 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. Когда вызывается вышеупомянутый слот, параметром, который он принимает, является объект 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 управления несущей в 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 в качестве родительского объекта.
[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.
[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().
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(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)
Возвращает новый объект QNetworkReply, который обрабатывает операцию op и запрос originalReq. Устройство outgoingData всегда равно 0 для запросов Get и Head, но имеет значение, переданное в post() и put() в этих операциях (варианты с QByteArray передадут объект QBuffer).
Реализация по умолчанию вызывает QNetworkCookieJar::cookiesForUrl() в установленном с помощью 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().
[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().
bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const
Возвращает true, если кэш HSTS использует постоянное хранилище для загрузки и хранения политик HSTS.
Эта функция была добавлена в Qt 5.10.
См. также enableStrictTransportSecurityStore().
QNetworkAccessManager::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 = 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. Кэш используется для всех запросов, отправленных менеджером.
Используйте эту функцию для установки объекта кэша сети на класс, который реализует дополнительные функции, такие как сохранение куки в постоянном хранилище.
Примечание: 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)
Устанавливает хранилище куки для менеджера в cookieJar, указанный. Хранилище куки используется всеми запросами, отправленными менеджером.
Используйте эту функцию для установки объекта хранилища куки в класс, реализующий дополнительные возможности, такие как сохранение куки в постоянном хранилище.
Примечание: QNetworkAccessManager принимает во владение объект cookieJar.
Если cookieJar находится в том же потоке, что и этот QNetworkAccessManager, он установит родителя cookieJar, чтобы хранилище куки было удалено при удалении этого объекта. Если вы хотите использовать хранилища куки между различными объектами QNetworkAccessManager, вы можете установить родителя хранилища куки в 0 после вызова этой функции.
QNetworkAccessManager по умолчанию не реализует собственную политику обработки куки: он принимает все куки, отправленные сервером, если они правильно сформированы и соответствуют минимальным требованиям безопасности (домен куки совпадает с доменной частью запроса, а путь куки совпадает с путем запроса). Для реализации собственной политики безопасности переопределите виртуальные функции QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl(). Эти функции вызываются QNetworkAccessManager, когда он обнаруживает новую куки.
См. также 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().
[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/archives/qt-5.11/qnetworkaccessmanager.html