Qt:QNetworkReply
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的更多相关文章
- Qt:禁止qDebug的输出
		
Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT
 - Qt:使用自定义的字体
		
Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF" ...
 - QT  通过QNetworkReply *获取对应请求的URL地址
		
[1]QT 通过QNetworkReply *获取对应请求的URL地址 reply->url().toString(); Good Good Study, Day Day Up. 顺序 选择 循 ...
 - Qt:QJsonObject
		
0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...
 - Qt:QJsonValue
		
0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...
 - Qt:QJsonArray
		
0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...
 - Qt:QUrl构造时的qrc前缀
		
参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...
 - QT:多线程HTTP下载文件
		
这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...
 - Qt:QNetworkAccessManager
		
0.说明 QNetworkAccessManager允许应用发送Request并接受回应. 网络访问API是围绕一个QNetworkAccessManager对象构建的,该对象保留了所有它发送的请求的 ...
 
随机推荐
- linux虚拟机xshell安装
			
目录 一:虚拟机安装 二:配置windows网络 三:linux操作系统安装 四:xshell安装使用 一:虚拟机安装 1.双击虚拟机软件 ---> 下一步 直至安装完毕 2.安装Linux操作 ...
 - Java 锁 概念介绍
			
一 Java中的锁是什么? /* * 一 Java锁定义? * 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制. * 锁旨在强制 ...
 - Vue 之 浏览本地图片功能
			
template <input type="file" ref="input_file" @change="fileChange" ...
 - spring 整合shiro框架    模拟登录控制器。
			
一.导入shiro jar包. 我在maven项目中,将常用的jar包都放在里面. <?xml version="1.0" encoding="UTF-8&qu ...
 - springcloud介绍
			
1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构.这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架 ...
 - Nginx 根据不同的域名来代理转发内部主机-HTTP和HTTPS
			
一.需求 由于公司只有一个公网,很多 web 项目都想通过 80 或 443 端口来访问,所以需要 Nginx 充当公司网关. 把唯一的公网 IP 80 端口和 443 端口跟 Nginx 网关主机 ...
 - 势能分析(splay分析)
			
定义 第\(x\)次操作后,势能为\(\phi(x)\),该操作实际复杂度\(c(x)\),均摊复杂度\(a(x)\). 定义\(a(x)=c(x)+\phi(x)-\phi(x-1)\). 那么总复 ...
 - Java中class的前面添加public和不添加public有什么区别?
			
需要知道的是修饰类和变量的用来控制这个被修饰的类和变量的适用范围的修饰词有: 1.public:表示公开的类和变量,既所有的类都可以引入使用的. 2.protected:表示受保护的类,只有子孙类和本 ...
 - JVM学习一:常用JVM配置参数
			
原文链接:https://www.cnblogs.com/pony1223/p/8661219.html 在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技 ...
 - 循环retian
			
1.循环retian基本概念 循环retain的场景 比如A对象retain了B对象,B对象retain了A对象 循环retain的弊端 这样会导致A对象和B对象永远无法释放 循环retain的解决方 ...