0、说明

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

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

QByteArray data = reply->readAll();

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

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

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

注意

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

1、模块和加载项

Header: #include <QNetworkReply>
qmake: QT += network
Since: Qt 4.4
Inherits: QIODevice

2、构造

3、静态字段

类型

字段

说明

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

4、实例方法

返回值类型

方法

说明

QVariant attribute(QNetworkRequest::Attribute code)  
QNetworkReply::NetworkError error()  
bool hasRawHeader(QByteArray headerName)  
QVariant header(QNetworkRequest::KnownHeaders header)  
void ignoreSslErrors(QList<QSslError> errors)  
bool isFinished()  
bool isRunning()  
QNetworkAccessManager * manager()  
QNetworkAccessManager::Operation operation()  
QByteArray rawHeader(QByteArray headerName)  
QList<QByteArray> rawHeaderList()  
QList<QNetworkReply::RawHeaderPair> rawHeaderPairs()  
qint64 readBufferSize()  
QNetworkRequest request()  
virtual void setReadBufferSize(qint64 size)  
void setSslConfiguration(QSslConfiguration config)  
QSslConfiguration sslConfiguration()  
QUrl url()  

5、信号

信号

说明

downloadProgress(qint64 bytesReceived, qint64 bytesTotal)  
encrypted()  
errorOccurred(QNetworkReply::NetworkError code)  
finished()  
metaDataChanged()  
preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)  
redirectAllowed()  
redirected(QUrl url)  
sslErrors(QList<QSslError> errors)  
uploadProgress(qint64 bytesSent, qint64 bytesTotal)  

Qt:QNetworkReply的更多相关文章

  1. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  2. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  3. QT 通过QNetworkReply *获取对应请求的URL地址

    [1]QT 通过QNetworkReply *获取对应请求的URL地址 reply->url().toString(); Good Good Study, Day Day Up. 顺序 选择 循 ...

  4. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  5. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  6. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  7. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  8. QT:多线程HTTP下载文件

    这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...

  9. Qt:QNetworkAccessManager

    0.说明 QNetworkAccessManager允许应用发送Request并接受回应. 网络访问API是围绕一个QNetworkAccessManager对象构建的,该对象保留了所有它发送的请求的 ...

随机推荐

  1. linux中三剑客之一grep命令

    目录 一:grep语法格式: 二:参数: 三:正则表达式 1.linux正则表达式 2.普通正则表达式 四:正则与grep实战案例实战: grep简介: linux 三剑客之一,文本过滤器(根据文本内 ...

  2. IntelliJ IDEA 官方网站 http://www.jetbrains.com/idea/

    IntelliJ IDEA 官方网站 http://www.jetbrains.com/idea/

  3. Android的基本资源引用(字符串、颜色、尺寸、数组)【转】

    感谢大佬:https://blog.csdn.net/wenge1477/article/details/81295763 Android的基本资源引用(字符串.颜色.尺寸.数组)[转] 一.Andr ...

  4. linux 编译C++

    转载请注明来源:https://www.cnblogs.com/hookjc/ makefile文件内容: main:main.o fun1.o fun2.o g++ -o main  main.o ...

  5. Linux下Wordpress忘记密码后的解决方法

    进入Wordpress的数据库,找到wp_users表,使用MD5('你的密码')函数添加密码 示例: 修改admin的密码为123456 UPDATE wp_users SET user_pass= ...

  6. 有关OPenCV的几个库函数的使用

    转载请注明来源:https://www.cnblogs.com/hookjc/ 1) IplImage* cvCreateImage( CvSize size, int depth, int chan ...

  7. Java.lang.Integer类中toString(int i, int radix)的具体实现

    Java.lang.Integer.toString(int i,int radix)方法可以实现将一个int类型的10进制的数据转换为指定进制的数据. api文档中介绍: 返回第二个参数指定的基数中 ...

  8. 【转载收藏】使用Jacoco远程统计tomcat服务的代码覆盖率

    在做软件开发的时候经常会遇到做各种测试,这里介绍一种本人遇到的:代码覆盖率测试, 这个测试非常实用,能发现许多无效的模块和代码.强烈推荐!!!!! 网上好多资料都不全,而且没有详细的配置流程 本文将简 ...

  9. FileInputStream 类与 FileReader 类的区别

    FileInputStream 类与 FileReader 类的区别: 两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,它们到底有何区别呢? FileIn ...

  10. VUE3 之 动态组件 - 这个系列的教程通俗易懂,适合新手

    1. 概述 暗示效应告诉我们: 巧妙的暗示会在不知不觉中剥夺我们的判断力,对我们的思维形成一定的影响,造成我们行为的些许改变或者偏差. 例如你的朋友说你脸色不太好,是不是病了,此时,你可能就会感觉浑身 ...