QNetworkAccessManager Class
The QNetworkAccessManager class sends HTTP requests and returns the replies. More…
| Header | #include <QNetworkAccessManager> |
|---|---|
| CMake | target_link_libraries(app PRIVATE Nt::Network) |
| Module | Nt Network C++ Classes |
| Inherits | QObject |
List of all members, including inherited members
Public Types
| enum | Operation |
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()) |
| int | transferTimeout() const |
| void | setTransferTimeout(int timeout) |
Signals
| void | finished(QNetworkReply *reply) |
| void | encrypted(QNetworkReply *reply) |
| void | sslErrors(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.
| Constant | Description |
|---|---|
QNetworkAccessManager::HeadOperation | A HEAD request. |
QNetworkAccessManager::GetOperation | A GET request. |
QNetworkAccessManager::PutOperation | A PUT request. |
QNetworkAccessManager::PostOperation | A POST request. |
QNetworkAccessManager::DeleteOperation | A DELETE request. |
QNetworkAccessManager::CustomOperation | A request with a custom verb. |
QNetworkAccessManager::UnknownOperation | Not a valid operation. |
Member Function Documentation
QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)
Constructs a manager with the given parent.
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.
void QNetworkAccessManager::encrypted(QNetworkReply *reply)
This signal is emitted when the TLS handshake of reply has finished.
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.
QNetworkReply * QNetworkAccessManager::head(const QNetworkRequest &request)
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().
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().