Indicates all possible error conditions found during the processing of the request.
Note:
When the HTTP protocol returns a redirect no error will be reported. You can check if there is a redirect with the
QNetworkRequest::RedirectionTargetAttribute
attribute.
Constant
|
Value
|
Description
|
QNetworkReply::NoError
|
0
|
no error condition.
|
See also
error
() and
errorOccurred
().
RawHeaderPair is a
QPair
<
QByteArray
,
QByteArray
> where the first
QByteArray
is the header name and the second is the header.
Member Function Documentation
QNetworkReply::
QNetworkReply
(
QObject
*
parent
= nullptr)
Creates a QNetworkReply object with parent
parent
.
You cannot directly instantiate QNetworkReply objects. Use
QNetworkAccessManager
functions to do that.
QNetworkReply::
~QNetworkReply
()
Disposes of this reply and frees any resources associated with it. If any network connections are still open, they will be closed.
See also
abort
() and
close
().
void
QNetworkReply::
abort
()
Aborts the operation immediately and close down any network connections still open. Uploads still in progress are also aborted.
The
finished
() signal will also be emitted.
See also
close
() and
finished
().
Returns the attribute associated with the code
code
. If the attribute has not been set, it returns an invalid
QVariant
(type
QMetaType::UnknownType
).
You can expect the default values listed in
QNetworkRequest::Attribute
to be applied to the values returned by this function.
See also
setAttribute
() and
QNetworkRequest::Attribute
.
void
QNetworkReply::
close
()
Reimplements:
QIODevice::close
().
Closes this device for reading. Unread data is discarded, but the network resources are not discarded until they are finished. In particular, if any upload is in progress, it will continue until it is done.
The
finished
() signal is emitted when all operations are over and the network resources are freed.
See also
abort
() and
finished
().
void
QNetworkReply::
downloadProgress
(
qint64
bytesReceived
,
qint64
bytesTotal
)
This signal is emitted to indicate the progress of the download part of this network request, if there's any. If there's no download associated with this request, this signal will be emitted once with 0 as the value of both
bytesReceived
and
bytesTotal
.
The
bytesReceived
parameter indicates the number of bytes received, while
bytesTotal
indicates the total number of bytes expected to be downloaded. If the number of bytes to be downloaded is not known,
bytesTotal
will be -1.
The download is finished when
bytesReceived
is equal to
bytesTotal
. At that time,
bytesTotal
will not be -1.
Note that the values of both
bytesReceived
and
bytesTotal
may be different from
size
(), the total number of bytes obtained through
read
() or
readAll
(), or the value of the header(ContentLengthHeader). The reason for that is that there may be protocol overhead or the data may be compressed during the download.
See also
uploadProgress
() and
bytesAvailable
().
void
QNetworkReply::
encrypted
()
This signal is emitted when an SSL/TLS session has successfully completed the initial handshake. At this point, no user data has been transmitted. The signal can be used to perform additional checks on the certificate chain, for example to notify users when the certificate for a website has changed. If the reply does not match the expected criteria then it should be aborted by calling
QNetworkReply::abort
() by a slot connected to this signal. The SSL configuration in use can be inspected using the
QNetworkReply::sslConfiguration
() method.
Internally,
QNetworkAccessManager
may open multiple connections to a server, in order to allow it process requests in parallel. These connections may be reused, which means that the encrypted() signal would not be emitted. This means that you are only guaranteed to receive this signal for the first connection to a site in the lifespan of the
QNetworkAccessManager
.
See also
QSslSocket::encrypted
() and
QNetworkAccessManager::encrypted
().
Returns the error that was found during the processing of this request. If no error was found, returns
NoError
.
See also
setError
().
This signal is emitted when the reply detects an error in processing. The
finished
() signal will probably follow, indicating that the connection is over.
The
code
parameter contains the code of the error that was detected. Call
errorString
() to obtain a textual representation of the error condition.
Note:
Do not delete the object in the slot connected to this signal. Use
deleteLater
().
See also
error
() and
errorString
().
void
QNetworkReply::
finished
()
This signal is emitted when the reply has finished processing. After this signal is emitted, there will be no more updates to the reply's data or metadata.
Unless
close
() or
abort
() have been called, the reply will still be opened for reading, so the data can be retrieved by calls to
read
() or
readAll
(). In particular, if no calls to
read
() were made as a result of
readyRead
(), a call to
readAll
() will retrieve the full contents in a
QByteArray
.
This signal is emitted in tandem with
QNetworkAccessManager::finished
() where that signal's reply parameter is this object.
Note:
Do not delete the object in the slot connected to this signal. Use
deleteLater
().
You can also use
isFinished
() to check if a
QNetworkReply
has finished even before you receive the finished() signal.
See also
setFinished
(),
QNetworkAccessManager::finished
(), and
isFinished
().
Returns
true
if the raw header of name
headerName
was sent by the remote server
Note:
In Qt versions prior to 6.7, this function took
QByteArray
only.
See also
rawHeader
().
Returns the value of the known header
header
, if that header was sent by the remote server. If the header was not sent, returns an invalid
QVariant
.
See also
rawHeader
(),
setHeader
(), and
QNetworkRequest::header
().
void
QNetworkReply::
ignoreSslErrors
()
If this function is called, SSL errors related to network connection will be ignored, including certificate validation errors.
Warning:
Be sure to always let the user inspect the errors reported by the
sslErrors
() signal, and only call this method upon confirmation from the user that proceeding is ok. If there are unexpected errors, the reply should be aborted. Calling this method without inspecting the actual errors will most likely pose a security risk for your application. Use it with great care!
This function can be called from the slot connected to the
sslErrors
() signal, which indicates which errors were found.
Note:
If HTTP Strict Transport Security is enabled for
QNetworkAccessManager
, this function has no effect.
See also
sslConfiguration
(),
sslErrors
(), and
QSslSocket::ignoreSslErrors
().
void
QNetworkReply::
ignoreSslErrors
(const
QList
<
QSslError
> &
errors
)
This is an overloaded function.
If this function is called, the SSL errors given in
errors
will be ignored.
Note:
Because most SSL errors are associated with a certificate, for most of them you must set the expected certificate this SSL error is related to. If, for instance, you want to issue a request to a server that uses a self-signed certificate, consider the following snippet:
Multiple calls to this function will replace the list of errors that were passed in previous calls. You can clear the list of errors you want to ignore by calling this function with an empty list.
Note:
If HTTP Strict Transport Security is enabled for
QNetworkAccessManager
, this function has no effect.
See also
sslConfiguration
(),
sslErrors
(),
QSslSocket::ignoreSslErrors
(), and
QNetworkAccessManager::setStrictTransportSecurityEnabled
().
void
QNetworkReply::
ignoreSslErrorsImplementation
(const
QList
<
QSslError
> &
errors
)
This virtual method is provided to enable overriding the behavior of
ignoreSslErrors
().
ignoreSslErrors
() is a public wrapper for this method.
errors
contains the errors the user wishes ignored.
See also
ignoreSslErrors
().
bool
QNetworkReply::
isFinished
() const
Returns
true
when the reply has finished or was aborted.
See also
isRunning
().
bool
QNetworkReply::
isRunning
() const
Returns
true
when the request is still processing and the reply has not finished or was aborted yet.
See also
isFinished
().
Returns the
QNetworkAccessManager
that was used to create this
QNetworkReply
object. Initially, it is also the parent object.
This signal is emitted whenever the metadata in this reply changes. metadata is any information that is not the content (data) itself, including the network headers. In the majority of cases, the metadata will be known fully by the time the first byte of data is received. However, it is possible to receive updates of headers or other metadata during the processing of the data.
See also
header
(),
rawHeaderList
(),
rawHeader
(), and
hasRawHeader
().
Returns the operation that was posted for this reply.
See also
setOperation
().
void
QNetworkReply::
preSharedKeyAuthenticationRequired
(
QSslPreSharedKeyAuthenticator
*
authenticator
)
This signal is emitted if the SSL/TLS handshake negotiates a PSK ciphersuite, and therefore a PSK authentication is then required.
When using PSK, the client must send to the server a valid identity and a valid pre shared key, in order for the SSL handshake to continue. Applications can provide this information in a slot connected to this signal, by filling in the passed
authenticator
object according to their needs.
Note:
Ignoring this signal, or failing to provide the required credentials, will cause the handshake to fail, and therefore the connection to be aborted.
Note:
The
authenticator
object is owned by the reply and must not be deleted by the application.
See also
QSslPreSharedKeyAuthenticator
.
Returns the raw contents of the header
headerName
as sent by the remote server. If there is no such header, returns an empty byte array, which may be indistinguishable from an empty header. Use
hasRawHeader
() to verify if the server sent such header field.
Note:
In Qt versions prior to 6.7, this function took
QByteArray
only.
See also
setRawHeader
(),
hasRawHeader
(), and
header
().
Returns a list of headers fields that were sent by the remote server, in the order that they were sent. Duplicate headers are merged together and take place of the latter duplicate.
Returns a list of raw header pairs.
qint64
QNetworkReply::
readBufferSize
() const
Returns the size of the read buffer, in bytes.
See also
setReadBufferSize
().
void
QNetworkReply::
redirectAllowed
()
When client code handling the
redirected
() signal has verified the new URL, it emits this signal to allow the redirect to go ahead. This protocol applies to network requests whose redirects policy is set to
QNetworkRequest::UserVerifiedRedirectPolicy
See also
QNetworkRequest::UserVerifiedRedirectPolicy
,
QNetworkAccessManager::setRedirectPolicy
(), and
QNetworkRequest::RedirectPolicyAttribute
.
void
QNetworkReply::
redirected
(const
QUrl
&
url
)
This signal is emitted if the
QNetworkRequest::ManualRedirectPolicy
was not set in the request and the server responded with a 3xx status (specifically 301, 302, 303, 305, 307 or 308 status code) with a valid url in the location header, indicating a HTTP redirect. The
url
parameter contains the new redirect url as returned by the server in the location header.
See also
QNetworkRequest::RedirectPolicy
.
QNetworkRequest
QNetworkReply::
request
() const
Returns the request that was posted for this reply. In special, note that the URL for the request may be different than that of the reply.
See also
QNetworkRequest::url
(),
url
(), and
setRequest
().
void
QNetworkReply::
requestSent
()
This signal is emitted 1 or more times when the request was sent. Useful for custom progress or timeout handling.
This function was introduced in Qt 6.3.
See also
metaDataChanged
() and
socketStartedConnecting
().
Sets the attribute
code
to have value
value
. If
code
was previously set, it will be overridden. If
value
is an invalid
QVariant
, the attribute will be unset.
See also
attribute
() and
QNetworkRequest::setAttribute
().
Sets the error condition to be
errorCode
. The human-readable message is set with
errorString
.
Calling setError() does not emit the
errorOccurred
(
QNetworkReply::NetworkError
) signal.
See also
error
() and
errorString
().
void
QNetworkReply::
setFinished
(
bool
finished
)
Sets the reply as
finished
.
After having this set the replies data must not change.
See also
finished
() and
isFinished
().
Sets the known header
header
to be of value
value
. The corresponding raw form of the header will be set as well.
See also
header
(),
setRawHeader
(), and
QNetworkRequest::setHeader
().
Sets the associated operation for this object to be
operation
. This value will be returned by
operation
().
Note:
The operation should be set when this object is created and not changed again.
See also
operation
() and
setRequest
().
Sets the raw header
headerName
to be of value
value
. If
headerName
was previously set, it is overridden. Multiple HTTP headers of the same name are functionally equivalent to one single header with the values concatenated, separated by commas.
If
headerName
matches a known header, the value
value
will be parsed and the corresponding parsed form will also be set.
See also
rawHeader
(),
header
(),
setHeader
(), and
QNetworkRequest::setRawHeader
().
void
QNetworkReply::
setReadBufferSize
(
qint64
size
)
Sets the size of the read buffer to be
size
bytes. The read buffer is the buffer that holds data that is being downloaded off the network, before it is read with
QIODevice::read
(). Setting the buffer size to 0 will make the buffer unlimited in size.
QNetworkReply
will try to stop reading from the network once this buffer is full (i.e.,
bytesAvailable
() returns
size
or more), thus causing the download to throttle down as well. If the buffer is not limited in size,
QNetworkReply
will try to download as fast as possible from the network.
Unlike
QAbstractSocket::setReadBufferSize
(),
QNetworkReply
cannot guarantee precision in the read buffer size. That is,
bytesAvailable
() can return more than
size
.
See also
readBufferSize
().
void
QNetworkReply::
setRequest
(const
QNetworkRequest
&
request
)
Sets the associated request for this object to be
request
. This value will be returned by
request
().
Note:
The request should be set when this object is created and not changed again.
See also
request
() and
setOperation
().
void
QNetworkReply::
setSslConfiguration
(const
QSslConfiguration
&
config
)
Sets the SSL configuration for the network connection associated with this request, if possible, to be that of
config
.
See also
sslConfiguration
().
void
QNetworkReply::
setSslConfigurationImplementation
(const
QSslConfiguration
&
configuration
)
This virtual method is provided to enable overriding the behavior of
setSslConfiguration
().
setSslConfiguration
() is a public wrapper for this method. If you override this method use
configuration
to set the SSL configuration.
See also
sslConfigurationImplementation
() and
setSslConfiguration
().
void
QNetworkReply::
setUrl
(const
QUrl
&
url
)
Sets the URL being processed to be
url
. Normally, the URL matches that of the request that was posted, but for a variety of reasons it can be different (for example, a file path being made absolute or canonical).
See also
url
(),
request
(), and
QNetworkRequest::url
().
void
QNetworkReply::
socketStartedConnecting
()
This signal is emitted 0 or more times, when the socket is connecting, before sending the request. Useful for custom progress or timeout handling.
This function was introduced in Qt 6.3.
See also
metaDataChanged
() and
requestSent
().
QSslConfiguration
QNetworkReply::
sslConfiguration
() const
Returns the SSL configuration and state associated with this reply, if SSL was used. It will contain the remote server's certificate, its certificate chain leading to the Certificate Authority as well as the encryption ciphers in use.
The peer's certificate and its certificate chain will be known by the time
sslErrors
() is emitted, if it's emitted.
See also
setSslConfiguration
().
void
QNetworkReply::
sslConfigurationImplementation
(
QSslConfiguration
&
configuration
) const
This virtual method is provided to enable overriding the behavior of
sslConfiguration
().
sslConfiguration
() is a public wrapper for this method. The configuration will be returned in
configuration
.
See also
setSslConfigurationImplementation
() and
sslConfiguration
().
void
QNetworkReply::
sslErrors
(const
QList
<
QSslError
> &
errors
)
This signal is emitted if the SSL/TLS session encountered errors during the set up, including certificate verification errors. The
errors
parameter contains the list of errors.
To indicate that the errors are not fatal and that the connection should proceed, the
ignoreSslErrors
() function should be called from the slot connected to this signal. If it is not called, the SSL session will be torn down before any data is exchanged (including the URL).
This signal can be used to display an error message to the user indicating that security may be compromised and display the SSL settings (see
sslConfiguration
() to obtain it). If the user decides to proceed after analyzing the remote certificate, the slot should call
ignoreSslErrors
().
See also
QSslSocket::sslErrors
(),
QNetworkAccessManager::sslErrors
(),
sslConfiguration
(), and
ignoreSslErrors
().
void
QNetworkReply::
uploadProgress
(
qint64
bytesSent
,
qint64
bytesTotal
)
This signal is emitted to indicate the progress of the upload part of this network request, if there's any. If there's no upload associated with this request, this signal will not be emitted.
The
bytesSent
parameter indicates the number of bytes uploaded, while
bytesTotal
indicates the total number of bytes to be uploaded. If the number of bytes to be uploaded could not be determined,
bytesTotal
will be -1.
The upload is finished when
bytesSent
is equal to
bytesTotal
. At that time,
bytesTotal
will not be -1.
See also
downloadProgress
().
QUrl
QNetworkReply::
url
() const
Returns the URL of the content downloaded or uploaded. Note that the URL may be different from that of the original request. If redirections were enabled in the request, then this function returns the current url that the network API is accessing, i.e the url of the resource the request got redirected to.
See also
request
(),
setUrl
(),
QNetworkRequest::url
(), and
redirected
().
©
2024 The Qt Company Ltd.
Documentation contributions included herein are the copyrights of
their respective owners. The documentation provided herein is licensed under the terms of the
GNU Free Documentation License version 1.3
as published by the Free Software Foundation. Qt and respective logos are
trademarks
of The Qt Company Ltd. in Finland and/or other countries
worldwide. All other trademarks are property of their respective owners.
Constant
|
Value
|
Description
|
QNetworkReply::ConnectionRefusedError
|
1
|
the remote server refused the connection (the server is not accepting requests)
|
QNetworkReply::RemoteHostClosedError
|
2
|
the remote server closed the connection prematurely, before the entire reply was received and processed
|
QNetworkReply::HostNotFoundError
|
3
|
the remote host name was not found (invalid hostname)
|
QNetworkReply::TimeoutError
|
4
|
the connection to the remote server timed out
|
QNetworkReply::OperationCanceledError
|
5
|
the operation was canceled via calls to
abort
() or
close
() before it was finished.
|
QNetworkReply::SslHandshakeFailedError
|
6
|
the SSL/TLS handshake failed and the encrypted channel could not be established. The
sslErrors
() signal should have been emitted.
|
QNetworkReply::TemporaryNetworkFailureError
|
7
|
the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.
|
QNetworkReply::NetworkSessionFailedError
|
8
|
the connection was broken due to disconnection from the network or failure to start the network.
|
QNetworkReply::BackgroundRequestNotAllowedError
|
9
|
the background request is not currently allowed due to platform policy.
|
QNetworkReply::TooManyRedirectsError
|
10
|
while following redirects, the maximum limit was reached. The limit is by default set to 50 or as set by QNetworkRequest::setMaxRedirectsAllowed(). (This value was introduced in 5.6.)
|
QNetworkReply::InsecureRedirectError
|
11
|
while following redirects, the network access API detected a redirect from a encrypted protocol (https) to an unencrypted one (http). (This value was introduced in 5.6.)
|
QNetworkReply::ProxyConnectionRefusedError
|
101
|
the connection to the proxy server was refused (the proxy server is not accepting requests)
|
QNetworkReply::ProxyConnectionClosedError
|
102
|
the proxy server closed the connection prematurely, before the entire reply was received and processed
|
QNetworkReply::ProxyNotFoundError
|
103
|
the proxy host name was not found (invalid proxy hostname)
|
QNetworkReply::ProxyTimeoutError
|
104
|
the connection to the proxy timed out or the proxy did not reply in time to the request sent
|
QNetworkReply::ProxyAuthenticationRequiredError
|
105
|
the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)
|
QNetworkReply::ContentAccessDenied
|
201
|
the access to the remote content was denied (similar to HTTP error 403)
|
QNetworkReply::ContentOperationNotPermittedError
|
202
|
the operation requested on the remote content is not permitted
|
QNetworkReply::ContentNotFoundError
|
203
|
the remote content was not found at the server (similar to HTTP error 404)
|
QNetworkReply::AuthenticationRequiredError
|
204
|
the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)
|
QNetworkReply::ContentReSendError
|
205
|
the request needed to be sent again, but this failed for example because the upload data could not be read a second time.
|
QNetworkReply::ContentConflictError
|
206
|
the request could not be completed due to a conflict with the current state of the resource.
|
QNetworkReply::ContentGoneError
|
207
|
the requested resource is no longer available at the server.
|
QNetworkReply::InternalServerError
|
401
|
the server encountered an unexpected condition which prevented it from fulfilling the request.
|
QNetworkReply::OperationNotImplementedError
|
402
|
the server does not support the functionality required to fulfill the request.
|
QNetworkReply::ServiceUnavailableError
|
403
|
the server is unable to handle the request at this time.
|
QNetworkReply::ProtocolUnknownError
|
301
|
the Network Access API cannot honor the request because the protocol is not known
|
QNetworkReply::ProtocolInvalidOperationError
|
302
|
the requested operation is invalid for this protocol
|
QNetworkReply::UnknownNetworkError
|
99
|
an unknown network-related error was detected
|
QNetworkReply::UnknownProxyError
|
199
|
an unknown proxy-related error was detected
|
QNetworkReply::UnknownContentError
|
299
|
an unknown error related to the remote content was detected
|
QNetworkReply::ProtocolFailure
|
399
|
a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)
|
QNetworkReply::UnknownServerError
|
499
|
an unknown error related to the server response was detected
|