QNetworkReply 类包含数据和 Header 头,发送请求采用 QNetworkAccessManager . 更多...
头: | #include <QNetworkReply> |
CMake: |
find_package(Qt6 COMPONENTS Network REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
继承: | QIODevice |
注意: 此类的所有函数 可重入 .
enum | NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, …, UnknownServerError } |
RawHeaderPair |
virtual | ~QNetworkReply () |
QVariant | attribute (QNetworkRequest::Attribute code ) const |
QNetworkReply::NetworkError | error () const |
bool | hasRawHeader (const QByteArray & headerName ) const |
QVariant | header (QNetworkRequest::KnownHeaders header ) const |
void | ignoreSslErrors (const QList<QSslError> & errors ) |
bool | isFinished () const |
bool | isRunning () const |
QNetworkAccessManager * | manager () const |
QNetworkAccessManager::Operation | operation () const |
QByteArray | rawHeader (const QByteArray & headerName ) const |
QList<QByteArray> | rawHeaderList () const |
const QList<QNetworkReply::RawHeaderPair> & | rawHeaderPairs () const |
qint64 | readBufferSize () const |
QNetworkRequest | request () const |
virtual void | setReadBufferSize (qint64 size ) |
void | setSslConfiguration (const QSslConfiguration & config ) |
QSslConfiguration | sslConfiguration () const |
QUrl | url () const |
virtual void | close () override |
virtual void | abort () = 0 |
virtual void | ignoreSslErrors () |
void | downloadProgress (qint64 bytesReceived , qint64 bytesTotal ) |
void | encrypted () |
void | errorOccurred (QNetworkReply::NetworkError code ) |
void | finished () |
void | metaDataChanged () |
void | preSharedKeyAuthenticationRequired (QSslPreSharedKeyAuthenticator * authenticator ) |
void | redirectAllowed () |
void | redirected (const QUrl & url ) |
void | sslErrors (const QList<QSslError> & errors ) |
void | uploadProgress (qint64 bytesSent , qint64 bytesTotal ) |
QNetworkReply (QObject * parent = nullptr) | |
virtual void | ignoreSslErrorsImplementation (const QList<QSslError> & errors ) |
void | setAttribute (QNetworkRequest::Attribute code , const QVariant & value ) |
void | setError (QNetworkReply::NetworkError errorCode , const QString & errorString ) |
void | setFinished (bool finished ) |
void | setHeader (QNetworkRequest::KnownHeaders header , const QVariant & value ) |
void | setOperation (QNetworkAccessManager::Operation operation ) |
void | setRawHeader (const QByteArray & headerName , const QByteArray & value ) |
void | setRequest (const QNetworkRequest & request ) |
virtual void | setSslConfigurationImplementation (const QSslConfiguration & configuration ) |
void | setUrl (const QUrl & url ) |
virtual void | sslConfigurationImplementation (QSslConfiguration & configuration ) const |
QNetworkReply 类包含相关数据和元数据,张贴请求采用 QNetworkAccessManager 。像 QNetworkRequest ,它包含 URL 和 Header (两者的剖析和原生表单),有关回复状态的一些信息及回复本身的内容。
QNetworkReply 是顺序访问 QIODevice ,意味着一旦从对象读取数据,数据就不再由设备所保持。因此,应用程序有责任保持此数据,若需要的话。每当从网络接收和处理更多数据时, readyRead () 信号被发射。
downloadProgress () 信号也被发射当接收数据时,但其中包含的字节数可能不表示实际接收字节数,若有对内容做任何变换 (例如:解压缩和移除协议开销)。
即使 QNetworkReply 是 QIODevice 连接到回复内容,它还发射 uploadProgress () 信号,指示有这种内容操作的上传进度。
注意: 不要在槽中删除对象,其已连接到 errorOccurred () 或 finished () 信号。请使用 deleteLater ().
另请参阅 QNetworkRequest and QNetworkAccessManager .
指示在处理请求期间,发现的所有可能的错误条件。
常量 | 值 | 描述 |
---|---|---|
QNetworkReply::NoError
|
0
|
没有错误条件。 |
注意: 当 HTTP 协议返回重定向时,不会报告错误。可以校验是否有重定向采用 QNetworkRequest::RedirectionTargetAttribute 属性。
常量 | 值 | 描述 |
---|---|---|
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
|
操作被取消经由调用 abort () 或 close () 在它完成之前。 |
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
|
服务器此时无法处理请求。 |
QNetworkReply::ProtocolUnknownError
|
301
|
the Network Access API cannot honor the request because the protocol is not known |
QNetworkReply::ProtocolInvalidOperationError
|
302
|
请求的操作对此协议无效 |
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 |
另请参阅 error () 和 errorOccurred ().
RawHeaderPair is a QPair< QByteArray , QByteArray > 其中第一个 QByteArray 是 Header 头名,而第二个是头。
[protected]
QNetworkReply::
QNetworkReply
(
QObject
*
parent
= nullptr)
创建 QNetworkReply 对象,采用父级 parent .
您不可以直接实例化 QNetworkReply 对象。使用 QNetworkAccessManager 函数以做到这点。
[pure virtual slot]
void
QNetworkReply::
abort
()
立即中止操作并关闭所有仍打开的网络连接。仍在进行中的上传也将被中止。
finished () 信号也会被发射。
[signal]
void
QNetworkReply::
downloadProgress
(
qint64
bytesReceived
,
qint64
bytesTotal
)
此信号被发射,以指示此网络请求的下载部分的进度 (若有的话)。若没有与此请求关联的下载,此信号将发射 0 值一次对于 bytesReceived and bytesTotal .
bytesReceived 参数指示接收字节数,而 bytesTotal 指示期望要下载的总字节数。若不知道要下载的字节数, bytesTotal 将是 -1。
下载完成当 bytesReceived 等于 bytesTotal 。在那时, bytesTotal 不会是 -1。
注意:值为 bytesReceived and bytesTotal 可能异于 size (),总字节数的获取透过 read () 或 readAll (),header(ContentLengthHeader) 值。这样做的原因是可能有协议开销或数据压缩,在下载期间。
另请参阅 uploadProgress () 和 bytesAvailable ().
[signal, since 5.1]
void
QNetworkReply::
encrypted
()
此信号被发射,当 SSL/TLS 会话成功完成初始握手时。此时,尚未传输用户数据。可以使用信号来履行证书链额外校验 (例如:通知用户,当网站证书改变时)。若回复不匹配期望准则,则应中止通过调用 QNetworkReply::abort () 通过连接到此信号的槽。可以审查在使用中的 SSL 配置,使用 QNetworkReply::sslConfiguration () 方法。
在内部, QNetworkAccessManager 可能打开到服务器的多个连接,以允许它并行处理请求。这些连接可以被重用,意味着不会发射 encrypted() 信号。这意味着只能保证接收此信号 (对于首次连接到站点而言),在使用期内为 QNetworkAccessManager .
该函数在 Qt 5.1 引入。
另请参阅 QSslSocket::encrypted () 和 QNetworkAccessManager::encrypted ().
[signal, since 5.15]
void
QNetworkReply::
errorOccurred
(
QNetworkReply::NetworkError
code
)
此信号被发射,当回复在进行中检测到错误时。 finished () 信号将可能跟随,指示连接已结束。
code 参数包含检测到的错误代码。调用 errorString () 以获得错误条件的正文表示。
注意: 不要在槽中删除连接到此信号的对象。使用 deleteLater ().
该函数在 Qt 5.15 引入。
另请参阅 error () 和 errorString ().
[signal]
void
QNetworkReply::
finished
()
此信号被发射,当回复处理完成时。在此信号被发射之后,回复数据 (或元数据) 将不再有更多更新。
除非 close () 或 abort () 被调用,回复仍将打开以供读取,因此数据可以被检索通过调用 read () 或 readAll ()。尤其,若不调用 read () 生成结果为 readyRead (),调用 readAll () 将检索全部内容按 QByteArray .
此信号被串联发射采用 QNetworkAccessManager::finished () ,其中信号的回复参数是此对象。
注意: 不要在槽中删除连接到此信号的对象。使用 deleteLater ().
还可以使用 isFinished () 去校验,若 QNetworkReply 已完成,甚至在收到 finish() 信号之前。
另请参阅 setFinished (), QNetworkAccessManager::finished (),和 isFinished ().
[virtual slot]
void
QNetworkReply::
ignoreSslErrors
()
若此函数被调用,与网络连接相关的 SSL 错误将被忽略,包括证书验证错误。
警告: 确保始终让用户审查报告的错误通过 sslErrors () 信号,且仅调用此方法 (当用户确认后继续进行是 OK 的)。若存在意外错误,回复应被中止。不审查实际错误就调用此方法,很可能会给应用程序带来安全风险。小心使用!
可以调用此函数从槽连接到 sslErrors () 信号,指示发现了哪些错误。
注意: 若 HSTS (HTTP 严格传输安全) 被启用对于 QNetworkAccessManager ,此函数不起作用。
另请参阅 sslConfiguration (), sslErrors (),和 QSslSocket::ignoreSslErrors ().
[signal]
void
QNetworkReply::
metaDataChanged
()
此信号被发射,每当此回复的元数据改变时。元数据为不是 (数据) 内容本身的任何信息 (包括网络 Header 头)。在大多数情况下,元数据将完全已知,在收到第一数据字节时。不管怎样,接收 Header 头或其它元数据更新是可能的 (在数据处理期间)。
另请参阅 header (), rawHeaderList (), rawHeader (),和 hasRawHeader ().
[signal, since 5.5]
void
QNetworkReply::
preSharedKeyAuthenticationRequired
(
QSslPreSharedKeyAuthenticator
*
authenticator
)
此信号被发射若 SSL/TLS 握手协商 PSK (预共享密钥) 密码套件时,因此接着需要 PSK 身份验证。
当使用 PSK 时,客户端必须向服务器发送有效标识和有效 PSK (预共享密钥) 以便 SSL 握手得以继续。应用程序可以在此信号连接的槽中提供此信息,通过填入传递的 authenticator 对象根据需要。
注意: 忽略此信号或未能提供要求证书,将导致握手失败,因此连接将被中止。
注意: authenticator 对象由回复所拥有,且必须不可以通过应用程序被删除。
该函数在 Qt 5.5 引入。
另请参阅 QSslPreSharedKeyAuthenticator .
[signal, since 5.9]
void
QNetworkReply::
redirectAllowed
()
当客户端代码处理 redirected () 信号已验证新 URL,它发射此信号以允许重定向继续进行。此协议适用于的网络请求,其重定向策略被设为 QNetworkRequest::UserVerifiedRedirectPolicy
该函数在 Qt 5.9 引入。
另请参阅 QNetworkRequest::UserVerifiedRedirectPolicy , QNetworkAccessManager::setRedirectPolicy (),和 QNetworkRequest::RedirectPolicyAttribute .
[signal, since 5.6]
void
QNetworkReply::
redirected
(const
QUrl
&
url
)
此信号被发射,若 QNetworkRequest::ManualRedirectPolicy 是在请求中设置的,且服务器以 3xx 状态 (具体来说为 301、302、303、305、307 或 308 状态码) 响应,采用在 Location 头中的有效 URL 指示 HTTP 重定向。 url 参数包含在 Location 头中由服务器返回的新重定向 URL。
该函数在 Qt 5.6 引入。
另请参阅 QNetworkRequest::RedirectPolicy .
[signal]
void
QNetworkReply::
sslErrors
(const
QList
<
QSslError
> &
errors
)
此信号被发射,若 SSL/TLS 会话在设置期间遇到错误 (包括证书验证错误)。 errors 参数包含错误列表。
为指示错误不致命,且连接应继续进行, ignoreSslErrors () 函数应该被调用,从连接到此信号的槽中。若不调用,SSL 会话将被断开,在交换任何数据 (包括 URL) 之前。
此信号可用于向用户显示错误消息,指示安全性可能损害并显示 SSL 设置 (见 sslConfiguration () 以获得它)。若用户在分析远程证书后决定继续进行,槽应调用 ignoreSslErrors ().
另请参阅 QSslSocket::sslErrors (), QNetworkAccessManager::sslErrors (), sslConfiguration (),和 ignoreSslErrors ().
[signal]
void
QNetworkReply::
uploadProgress
(
qint64
bytesSent
,
qint64
bytesTotal
)
此信号被发射,以指示此网络请求的上传部分的进度,若有的话。若没有上传关联此请求,则不会发射此信号。
bytesSent 参数指示已上传的字节数,而 bytesTotal 指示要上传的总字节数。若无法确定要上传的字节数, bytesTotal 将是 -1。
上传完成当 bytesSent 等于 bytesTotal 。在那时, bytesTotal 不会是 -1。
另请参阅 downloadProgress ().
[virtual]
QNetworkReply::
~QNetworkReply
()
处置此回复并释放与其关联的任何资源。若任何网络连接仍处于打开状态,它们将被关闭。
返回属性关联代码 code 。若尚未设置属性,则返回无效 QVariant (类型 QMetaType::UnknownType ).
可以期望的默认值列表于 QNetworkRequest::Attribute 以应用由此函数返回的值。
另请参阅 setAttribute () 和 QNetworkRequest::Attribute .
[override virtual]
void
QNetworkReply::
close
()
重实现: QIODevice::close ().
关闭用于读取的此设备。未读取数据会被丢弃,但网络资源不会被丢弃直到它们完成为止。尤其,若正在进行任何上传,它将继续直到完成为止。
finished () 信号被发射,当所有操作结束,且网络资源已释放。
返回在此请求处理期间发现的错误。若未发现错误,返回 NoError .
另请参阅 setError ().
返回
true
若原生 Header 头名
headerName
由远程服务器发送
另请参阅 rawHeader ().
返回值为已知头 header ,若 Header 头是由远程服务器发送的。若未发送头,则返回无效 QVariant .
另请参阅 rawHeader (), setHeader (),和 QNetworkRequest::header ().
这是重载函数。
若此函数被调用,SSL 错误给出于 errors 将被忽略。
注意: 由于大多数 SSL 错误关联证书,因此对于大多数证书而言,必须设置与此 SSL 错误相关的期望证书。例如,若想要向使用自签名证书的服务器发出请求,考虑以下片段:
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem")); QSslError error(QSslError::SelfSignedCertificate, cert.at(0)); QList<QSslError> expectedSslErrors; expectedSslErrors.append(error); QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://server.tld/index.html"))); reply->ignoreSslErrors(expectedSslErrors); // here connect signals etc.
多次调用此函数将替换先前调用传入错误列表。可以清零想要忽略的错误列表通过采用空列表调用此函数。
注意: 若 HSTS (HTTP 严格传输安全) 被启用对于 QNetworkAccessManager ,此函数不起作用。
另请参阅 sslConfiguration (), sslErrors (), QSslSocket::ignoreSslErrors (),和 QNetworkAccessManager::setStrictTransportSecurityEnabled ().
[virtual protected, since 5.0]
void
QNetworkReply::
ignoreSslErrorsImplementation
(const
QList
<
QSslError
> &
errors
)
提供此虚拟方法以启用覆盖行为对 ignoreSslErrors (). ignoreSslErrors () 是用于此方法的公共包裹器。 errors 包含用户希望忽略的错误。
该函数在 Qt 5.0 引入。
另请参阅 ignoreSslErrors ().
返回
true
当回复已完成或被中止。
另请参阅 isRunning ().
返回
true
当请求仍继续进行,且回复尚未完成或尚未被中止时。
另请参阅 isFinished ().
返回 QNetworkAccessManager 用于创建此 QNetworkReply 对象。最初,它还是父级对象。
返回此回复张贴的操作。
另请参阅 setOperation ().
返回原生内容的头 headerName 由远程服务器发送。若没有这种头,则返回空字节数组 (可能与空头难以区分)。使用 hasRawHeader () 去验证,若服务器发送这种头字段。
另请参阅 setRawHeader (), hasRawHeader (),和 header ().
返回由远程服务器发送的 Header 字段列表,按发送顺序。重复 Header 被合并在一起并代替后者。
返回原生头对的列表。
返回读取缓冲的尺寸 (以字节为单位)。
另请参阅 setReadBufferSize ().
返回用于此回复的张贴请求。特别注意,请求 URL 可能不同于回复 URL。
另请参阅 QNetworkRequest::url (), url (),和 setRequest ().
[protected]
void
QNetworkReply::
setAttribute
(
QNetworkRequest::Attribute
code
, const
QVariant
&
value
)
设置属性 code 到拥有值 value 。若 code 先前有设置,将覆写它。若 value 是无效 QVariant ,属性未设置。
另请参阅 attribute () 和 QNetworkRequest::setAttribute ().
[protected]
void
QNetworkReply::
setError
(
QNetworkReply::NetworkError
errorCode
, const
QString
&
errorString
)
将错误条件设为 errorCode 。设置人性化可读消息采用 errorString .
调用 setError() 不会发射 errorOccurred ( QNetworkReply::NetworkError ) 信号。
另请参阅 error () 和 errorString ().
[protected]
void
QNetworkReply::
setFinished
(
bool
finished
)
把回复设为 finished .
在此设置之后,回复数据不得改变。
另请参阅 finished () 和 isFinished ().
[protected]
void
QNetworkReply::
setHeader
(
QNetworkRequest::KnownHeaders
header
, const
QVariant
&
value
)
设置已知头 header 到值 value 。相应原生格式的 Header 头也将被设置。
另请参阅 header (), setRawHeader (),和 QNetworkRequest::setHeader ().
[protected]
void
QNetworkReply::
setOperation
(
QNetworkAccessManager::Operation
operation
)
把此对象的关联操作设置为 operation 。此值被返回通过 operation ().
注意: 应在创建此对象,且不再更改时设置该操作。
另请参阅 operation () 和 setRequest ().
[protected]
void
QNetworkReply::
setRawHeader
(const
QByteArray
&
headerName
, const
QByteArray
&
value
)
设置原生头 headerName 到值 value 。若 headerName 先前有设置,则会被覆盖。相同名称的多个 HTTP 头在功能上相当于值串联的某一单头,以逗号分隔。
若 headerName 匹配已知 Header 头,值 value 将被剖析且还将设置相应剖析形式。
另请参阅 rawHeader (), header (), setHeader (),和 QNetworkRequest::setRawHeader ().
[virtual]
void
QNetworkReply::
setReadBufferSize
(
qint64
size
)
将读取缓冲的大小设为 size 字节。读取缓冲是保持网络下载数据的缓冲,在读取采用 QIODevice::read ()。把缓冲大小设为 0,将使缓冲大小不受限制。
QNetworkReply 将试着停止从网络读取,一旦此缓冲已满 (即, bytesAvailable () 返回 size 或更多),因此还会导致下载速度下降。若缓冲大小不受限制, QNetworkReply 将试着从网络尽可能快下载。
不像 QAbstractSocket::setReadBufferSize (), QNetworkReply 无法保证读取缓冲大小的精度。即, bytesAvailable () 可以返回的超出 size .
另请参阅 readBufferSize ().
[protected]
void
QNetworkReply::
setRequest
(const
QNetworkRequest
&
request
)
将此对象的关联请求设为 request 。此值被返回通过 request ().
注意: 应设置请求,当创建此对象时,且不要再次改变。
另请参阅 request () 和 setOperation ().
若可能的话,将此请求关联的网络连接的 SSL 配置设为 config .
另请参阅 sslConfiguration ().
[virtual protected, since 5.0]
void
QNetworkReply::
setSslConfigurationImplementation
(const
QSslConfiguration
&
configuration
)
提供此虚拟方法以启用覆盖行为对 setSslConfiguration (). setSslConfiguration () 是此方法的公共包裹器。若覆写此方法使用 configuration 去设置 SSL 配置。
该函数在 Qt 5.0 引入。
另请参阅 sslConfigurationImplementation () 和 setSslConfiguration ().
[protected]
void
QNetworkReply::
setUrl
(const
QUrl
&
url
)
将正在处理的 URL 设为 url 。通常,URL 匹配请求所张贴的 URL,但由于多种原因可能有所不同 (例如:将文件路径变为绝对路径或典型路径)。
另请参阅 url (), request (),和 QNetworkRequest::url ().
返回此回复关联的 SSL 配置和状态,若有使用 SSL。它将包含远程服务器证书、通向证书颁发机构的证书链及在使用中的加密密码。
对等方的证书及其证书链将是已知的,当 sslErrors () 被发射时,若它被发射。
另请参阅 setSslConfiguration ().
[virtual protected, since 5.0]
void
QNetworkReply::
sslConfigurationImplementation
(
QSslConfiguration
&
configuration
) const
提供此虚拟方法以启用覆盖行为对 sslConfiguration (). sslConfiguration () 是用于此方法的公共包裹器。配置将返回在 configuration .
该函数在 Qt 5.0 引入。
另请参阅 setSslConfigurationImplementation () 和 sslConfiguration ().
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.
另请参阅 request (), setUrl (), QNetworkRequest::url (),和 redirected ().