6.0.0-rc4Source

QNetworkAccessManager Class

The QNetworkAccessManager class sends HTTP requests and returns the replies. More…

Header#include <QNetworkAccessManager>
CMaketarget_link_libraries(app PRIVATE Nt::Network)
ModuleNt Network C++ Classes
InheritsQObject

List of all members, including inherited members

Public Types

enumOperation

Public Functions

QNetworkAccessManager(QObject *parent = nullptr)
~QNetworkAccessManager()
QNetworkReply *head(const QNetworkRequest &request)
QNetworkReply *get(const QNetworkRequest &request)
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data)
QNetworkReply *deleteResource(const QNetworkRequest &request)
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data = QByteArray())
inttransferTimeout() const
voidsetTransferTimeout(int timeout)

Signals

voidfinished(QNetworkReply *reply)
voidencrypted(QNetworkReply *reply)
voidsslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

Detailed Description

One manager is enough for a whole application. Each request returns a QNetworkReply straight away, and the transfer happens on the event loop:

QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("http://example.com/")));
QObject::connect(reply, &QNetworkReply::finished, [reply] {
    if (reply->error() == QNetworkReply::NoError)
        qDebug() << reply->readAll();
    reply->deleteLater();
});

You own the reply: delete it with deleteLater() when finished() is emitted.

Redirects are followed by default, and credentials are not sent to a different origin. A response cut short reports RemoteHostClosedError rather than appearing to succeed.

See also QNetworkRequest, QNetworkReply and QUrl.

Differences from Qt

HTTP/1.1 only, over http: and https: (https needs a build with OpenSSL, or with Mbed TLS on Zephyr); ftp: and file: URLs fail with ProtocolUnknownError. Each request uses its own connection, with no keep-alive pooling. There is no cookie jar, proxy, cache, compressed-transfer support or authenticationRequired() signal; credentials in the URL are sent as HTTP Basic. A QIODevice body is read in full before the request starts, so uploads are not streamed.

Member Type Documentation

enum QNetworkAccessManager::Operation

Identifies a kind of request.

ConstantDescription
QNetworkAccessManager::HeadOperationA HEAD request.
QNetworkAccessManager::GetOperationA GET request.
QNetworkAccessManager::PutOperationA PUT request.
QNetworkAccessManager::PostOperationA POST request.
QNetworkAccessManager::DeleteOperationA DELETE request.
QNetworkAccessManager::CustomOperationA request with a custom verb.
QNetworkAccessManager::UnknownOperationNot a valid operation.

Member Function Documentation

[explicit] QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)

Constructs a manager with the given parent.

[override] QNetworkAccessManager::~QNetworkAccessManager()

Destroys the manager. Replies that are its children are destroyed too.

QNetworkReply * QNetworkAccessManager::deleteResource(const QNetworkRequest &request)

Sends a DELETE request for request and returns the reply.

[signal] void QNetworkAccessManager::encrypted(QNetworkReply *reply)

This signal is emitted when the TLS handshake of reply has finished.

[signal] void QNetworkAccessManager::finished(QNetworkReply *reply)

This signal is emitted whenever reply finishes. The reply stays valid until you delete it; use deleteLater() from a slot.

QNetworkReply * QNetworkAccessManager::get(const QNetworkRequest &request)

Sends a GET request for request and returns the reply.

Sends a HEAD request for request and returns the reply.

QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)

Sends a POST request for request with the body data and returns the reply.

QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)

This is an overloaded function.

Sends a POST request for request, reading the body from data at once.

QNetworkReply * QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)

Sends a PUT request for request with the body data and returns the reply.

QNetworkReply * QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)

This is an overloaded function.

Sends a PUT request for request, reading the body from data at once.

QNetworkReply * QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data = QByteArray())

Sends request with the method verb and the body data, and returns the reply.

void QNetworkAccessManager::setTransferTimeout(int timeout)

Sets the default inactivity timeout to timeout milliseconds, for requests that do not set their own.

See also transferTimeout().

[signal] void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)

This signal is emitted if verifying the server of reply found errors. Unless a connected slot calls QNetworkReply::ignoreSslErrors(), the reply fails.

int QNetworkAccessManager::transferTimeout() const

Returns the default inactivity timeout in milliseconds; 0 means none.

See also setTransferTimeout().