Класс 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 = Q_NULLPTR) | |
| ~QNetworkAccessManager() | |
| QNetworkConfiguration | activeConfiguration() const |
| QAbstractNetworkCache * | cache() const |
| void | clearAccessCache() |
| 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) |
| 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) |
| QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = Q_NULLPTR) |
| 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) |
| QStringList | supportedSchemes() const |
- 31 открытая функция унаследована от 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 &req, 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 управления несущими в 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.
Функции доступа:
| 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().
[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.
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 &req, QIODevice *outgoingData = Q_NULLPTR)
Возвращает новый объект QNetworkReply для обработки операции op и запроса req. Устройство 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).
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().
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().
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 таким образом, чтобы cookie-журнал был удален при удалении этого объекта. Если вы хотите использовать cookie-журналы в разных объектах QNetworkAccessManager, вы можете установить родителя cookie-журнала в 0 после вызова этой функции.
QNetworkAccessManager по умолчанию не реализует никакой собственной политики cookie: он принимает все cookie, отправленные сервером, при условии, что они правильно сформированы и соответствуют минимальным требованиям безопасности (домен cookie соответствует домену запроса и путь cookie соответствует пути запроса). Для реализации собственной политики безопасности переопределите виртуальные функции QNetworkCookieJar::cookiesForUrl() и QNetworkCookieJar::setCookiesFromUrl(). Эти функции вызываются QNetworkAccessManager при обнаружении нового cookie.
См. также 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.
[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().
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.6/qnetworkaccessmanager.html