Qt:QNetworkReply
阅读原文时间:2023年07月12日阅读:1

QNetworkReply对象包含了Manager发送的请求头和返回的数据。

它继承自QIODevice,所以可以用各种read获取其中返回的数据:

QByteArray data = reply->readAll();

QNetworkReply是顺序访问的QIODevice,这意味着一旦数据从中读取出来之后,它就不再为Device保存了。因此保存数据的工作必须要由应用程序自己来实现。每当有新的数据从网络中传来时,readyRead()信号就会被发送。

此外,数据接收时downloadProgress()信号也会被发送,只是其中包含的bytes数并不代表实际接收的bytes,因为可能存在着数据转换(如解压缩和撤销协议)。

它也会发送uploadProgress()信号,指示上传这些内容的进度。

注意

不要在信号errorOccurred()和finished()的槽中删除Object,而应该使用deleteLater()。

Header:

#include

qmake:

QT += network

Since:

Qt 4.4

Inherits:

QIODevice

类型

字段

说明

enum

NetworkError

标识在处理Request期间可能发生的所有错误。

常见的是QNetworkReply::NoError,标识没有错误。

typedef

RawHeaderPair

一个QPair < QByteArray , QByteArray >,第一个QByteArray是header name,第二个QByteArray是header

NetworkError

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

返回值类型

方法

说明

QVariant

attribute(QNetworkRequest::Attribute code)

 

QNetworkReply::NetworkError

error()

 

bool

hasRawHeader(QByteArray headerName)

 

QVariant

header(QNetworkRequest::KnownHeaders header)

 

void

ignoreSslErrors(QList errors)

 

bool

isFinished()

 

bool

isRunning()

 

QNetworkAccessManager *

manager()

 

QNetworkAccessManager::Operation

operation()

 

QByteArray

rawHeader(QByteArray headerName)

 

QList

rawHeaderList()

 

QList

rawHeaderPairs()

 

qint64

readBufferSize()

 

QNetworkRequest

request()

 

virtual void

setReadBufferSize(qint64 size)

 

void

setSslConfiguration(QSslConfiguration config)

 

QSslConfiguration

sslConfiguration()

 

QUrl

url()

 

信号

说明

downloadProgress(qint64 bytesReceived, qint64 bytesTotal)

 

encrypted()

 

errorOccurred(QNetworkReply::NetworkError code)

 

finished()

 

metaDataChanged()

 

preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *_authenticator_)

 

redirectAllowed()

 

redirected(QUrl url)

 

sslErrors(QList errors)

 

uploadProgress(qint64 bytesSent, qint64 bytesTotal)

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章