QNetworkReply Class Reference

[QtNetwork module]

该QNetworkReply类包含数据和标头与发送请求QNetworkAccessManager More…

继承QIODevice

Types

  • enum NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, ..., TemporaryNetworkFailureError }

Methods

  • __init__ (self, QObject parent = None)
  • abort (self)
  • QVariant attribute (self, QNetworkRequest.Attribute code)
  • close (self)
  • NetworkError error (self)
  • bool hasRawHeader (self, QByteArray headerName)
  • QVariant header (self, QNetworkRequest.KnownHeaders header)
  • ignoreSslErrors (self)
  • ignoreSslErrors (self, list-of-QSslError errors)
  • bool isFinished (self)
  • bool isRunning (self)
  • bool isSequential (self)
  • QNetworkAccessManager manager (self)
  • QNetworkAccessManager.Operation operation (self)
  • QByteArray rawHeader (self, QByteArray headerName)
  • list-of-QByteArray rawHeaderList (self)
  • list-of-tuple-of-QByteArray-QByteArray rawHeaderPairs (self)
  • int readBufferSize (self)
  • QNetworkRequest request (self)
  • setAttribute (self, QNetworkRequest.Attribute code, QVariant value)
  • setError (self, NetworkError errorCode, QString errorString)
  • setFinished (self, bool finished)
  • setHeader (self, QNetworkRequest.KnownHeaders header, QVariant value)
  • setOperation (self, QNetworkAccessManager.Operation operation)
  • setRawHeader (self, QByteArray headerName, QByteArray value)
  • setReadBufferSize (self, int size)
  • setRequest (self, QNetworkRequest request)
  • setSslConfiguration (self, QSslConfiguration configuration)
  • setUrl (self, QUrl url)
  • QSslConfiguration sslConfiguration (self)
  • QUrl url (self)
  • int writeData (self, str data)

Qt Signals

  • void downloadProgress (qint64,qint64)
  • void error (QNetworkReply::NetworkError)
  • void finished ()
  • void metaDataChanged ()
  • void sslErrors (const QList<QSslError>&)
  • void uploadProgress (qint64,qint64)

Detailed Description

该QNetworkReply类包含数据和标头与发送请求QNetworkAccessManager

该QNetworkReply类包含与贴有一个请求中的数据和元数据QNetworkAccessManager。喜欢QNetworkRequest,它包含一个URL和标题(无论是在解析和原始形式) ,对答复的状态和回复本身的内容的一些信息。

QNetworkReply是顺序存取QIODevice,这意味着,一旦数据从对象读取时,它不再保持通过该装置。因此,它是应用程序的责任,保持这个数据,如果需要。每当更多的数据是从网络接收和处理,则readyRead()信号被发射。

downloadProgress()信号也被发射的数据的接收时,但包含在它的字节数可能并不代表实际收到的字节,如果有的话变换完成的内容(例如,解压缩并去除协议开销)。

尽管QNetworkReply是QIODevice连接到应答的内容,它也发射uploadProgress()信号,其指示上载于具有这样的内容的操作的进度。

Note:请不要删除该对象在连接到插槽error()或finished()信号。使用deleteLater( ) 。


Type Documentation

  1. QNetworkReply.NetworkError

指示请求的处理过程中找到的所有可能的错误条件。

Constant Value Description
QNetworkReply.NoError 0 没有错误条件。Note:当HTTP协议返回一个重定向没有错误将被报告。您可以检查是否有与重定向QNetworkRequest.RedirectionTargetAttribute属性。
QNetworkReply.ConnectionRefusedError 1 远程服务器拒绝连接(服务器不接受请求)
QNetworkReply.RemoteHostClosedError 2 远程服务器关闭了连接过早,整个答复接收和处理前
QNetworkReply.HostNotFoundError 3 远程主机名未找到(无效主机名)
QNetworkReply.TimeoutError 4 连接到远程服务器超时
QNetworkReply.OperationCanceledError 5 该操作是通过调用取消abort()或close( ),它被完成之前。
QNetworkReply.SslHandshakeFailedError 6 在SSL / TLS握手失败,加密的通道不能成立。该sslErrors()信号应该被发射。
QNetworkReply.TemporaryNetworkFailureError 7 该连接由于从网络断开断裂,但是在系统启动漫游到另一个接入点。该请求应该被重新提交,并会尽快连接重新建立处理。
QNetworkReply.ProxyConnectionRefusedError 101 连接到代理服务器被拒绝(代理服务器不接受请求)
QNetworkReply.ProxyConnectionClosedError 102 代理服务器关闭了连接过早,整个答复接收和处理前
QNetworkReply.ProxyNotFoundError 103 代理主机名没有被发现(无效的代理主机名)
QNetworkReply.ProxyTimeoutError 104 连接到代理服务器超时或代理没有及时发送请求回复
QNetworkReply.ProxyAuthenticationRequiredError 105 代理需要身份验证才能兑现的要求,但没有接受其提供的任何凭证(如有)
QNetworkReply.ContentAccessDenied 201 在访问远程内容被拒绝(类似于HTTP错误401 )
QNetworkReply.ContentOperationNotPermittedError 202 要求对远程内容的操作是不允许的
QNetworkReply.ContentNotFoundError 203 远程内容并没有在服务器上找到(类似于HTTP错误404 )
QNetworkReply.AuthenticationRequiredError 204 远程服务器要求身份验证服务的内容,但提供的凭据不被接受(如果有的话)
QNetworkReply.ContentReSendError 205 请求需要再次发送,但这种失败的例子,因为上传的数据无法读取第二次。
QNetworkReply.ProtocolUnknownError 301 网络访问API无法兑现的请求,因为该协议是不为人所知的
QNetworkReply.ProtocolInvalidOperationError 302 所请求的操作是此协议无效
QNetworkReply.UnknownNetworkError 99 检测到一个未知的网络有关的错误
QNetworkReply.UnknownProxyError 199 检测到一个未知的代理相关的错误
QNetworkReply.UnknownContentError 299 检测到一个未知错误相关的远程内容
QNetworkReply.ProtocolFailure 399 检测在协议的故障(解析错误,无效的或意外的反应,等等)

See also error( ) 。


Method Documentation

  1. QNetworkReply.__init__ (self, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建QNetworkReply与父对象parent

你不能直接实例化QNetworkReply对象。使用QNetworkAccessManager函数来做到这一点。

  1. QNetworkReply.abort (self)

这种方法是抽象的,应在任何子类中重新实现。

立即中止操作,并关闭所有的网络连接仍然处于打开状态。上传仍在进行中,也中止。

See also close( ) 。

  1. QVariant QNetworkReply.attribute (self, QNetworkRequest.Attribute code)
  1. QNetworkReply.close (self)

从重新实现QIODevice.close( ) 。

关闭此设备以供读取。未读取的数据将被丢弃,但是网络资源不被丢弃,直到它们被完成。特别是,如果任何的上传过程中,它会继续,直到它完成。

finished当所有的操作都​​在和网络资源被释放( )信号被发射。

See also abort()和finished( ) 。

  1. NetworkError QNetworkReply.error (self)

返回该请求的处理过程中发现错误。如果没有发现错误,返回NoError

See also setError( ) 。

  1. bool QNetworkReply.hasRawHeader (self, QByteArray headerName)

返回True如果name原始标题headerName被送往由远程服务器

See also rawHeader( ) 。

  1. QVariant QNetworkReply.header (self, QNetworkRequest.KnownHeaders header)

返回已知的标头的值header,如果这头被送往由远程服务器。如果头没有被发送,返回无效QVariant

See also rawHeader( )setHeader()和QNetworkRequest.header( ) 。

  1. QNetworkReply.ignoreSslErrors (self)

这种方法也是一个Qt槽与C + +的签名void ignoreSslErrors()

如果这个函数被调用,涉及到网络连接的SSL错误将被忽略,包括证书验证错误。

Warning:一定要始终让用户检查报告的错误sslErrors( )信号,并且只从用户的程序是确定经确认后,调用此方法。如果有意外的错误,得到的答复应中止。不检查实际的错误调用此方法将最有可能带来安全风险的应用程序。使用它以极大的关怀!

这个函数可以从连接到插槽被称为sslErrors()信号,这表明它被发现的错误。

See also sslConfiguration( )sslErrors()和QSslSocket.ignoreSslErrors( ) 。

  1. QNetworkReply.ignoreSslErrors (self, list-of-QSslError errors)

这是一个重载函数。

如果这个函数被调用时,在给定的SSL错误errors将被忽略。

请注意,您可以在SSL错误设定预期的证书:如果,例如,你想发出一个请求到使用自签名证书的服务器时,请考虑下面的代码片断:

  1. [QList]($docs-index.htm)<[QSslCertificate](qsslcertificate.html)> cert = [QSslCertificate](qsslcertificate.html).fromPath(QLatin1String("server-certificate.pem"));
  2. [QSslError](qsslerror.html) error([QSslError](qsslerror.html).SelfSignedCertificate, cert.at(0));
  3. [QList]($docs-index.htm)<[QSslError](qsslerror.html)> expectedSslErrors;
  4. expectedSslErrors.append(error);
  5. [QNetworkReply]($docs-qnetworkreply.html) *reply = manager.get([QNetworkRequest]($docs-qnetworkrequest.html)([QUrl]($docs-qurl.html)("https://server.tld/index.html")));
  6. reply->ignoreSslErrors(expectedSslErrors);
  7. // here connect signals etc.

多次调用该函数会被替换传入以前调用的错误列表。您可以清除通过调用这个函数以一个空列表,你要忽略错误的列表。

此功能被引入Qt的4.6 。

See also sslConfiguration( )sslErrors()和QSslSocket.ignoreSslErrors( ) 。

  1. bool QNetworkReply.isFinished (self)

返回True时,答复已完成或已中止。

此功能被引入Qt的4.6 。

See also isRunning( ) 。

  1. bool QNetworkReply.isRunning (self)

返回True时,该请求仍在处理并答复未能完成或已中止呢。

此功能被引入Qt的4.6 。

See also isFinished( ) 。

  1. bool QNetworkReply.isSequential (self)
  1. QNetworkAccessManager QNetworkReply.manager (self)

返回QNetworkAccessManager这是用于创建此QNetworkReply对象。起初,它也是父对象。

  1. QNetworkAccessManager.Operation QNetworkReply.operation (self)

[

返回被张贴该回复操作。

]($docs-qnetworkaccessmanager.html#Operation-enum)

See also setOperation( ) 。

  1. QByteArray QNetworkReply.rawHeader (self, QByteArray headerName)

返回头的原始内容headerName由远程服务器发送。如果没有这样的标题,则返回一个空字节数组,这可能是从一个空的头没有区别。使用hasRawHeader()来验证,如果服务器发送这样的头字段。

See also setRawHeader( )hasRawHeader()和header( ) 。

  1. list-of-QByteArray QNetworkReply.rawHeaderList (self)

返回由远程服务器发送的,因为它们被发送的顺序头字段的列表。重复的头被合并在一起并发生后重复的。

  1. list-of-tuple-of-QByteArray-QByteArray QNetworkReply.rawHeaderPairs (self)

返回原头对的列表。

  1. int QNetworkReply.readBufferSize (self)

返回读缓冲区的大小,以字节为单位。

See also setReadBufferSize( ) 。

  1. QNetworkRequest QNetworkReply.request (self)

[

返回被张贴于本答复的请求。在特殊的,注意的URL请求可以是比该答复的不同。

]($docs-qnetworkrequest.html)

See also QNetworkRequest.url( )url()和setRequest( ) 。

  1. QNetworkReply.setAttribute (self, QNetworkRequest.Attribute code, QVariant value)

设置属性code有值value。如果code以前设置,它会被复盖。如果value是无效的QVariant,该属性将取消。

See also attribute()和QNetworkRequest.setAttribute( ) 。

  1. QNetworkReply.setError (self, NetworkError errorCode, QString errorString)

设置错误条件是errorCode。人类可读的消息设置errorString

调用SETERROR ( )不会发出错误(QNetworkReply.NetworkError)信号。

See also error()和errorString( ) 。

  1. QNetworkReply.setFinished (self, bool finished)

设置答复finished

有在此之后设置回复的数据不能改变。

此功能被引入Qt的4.8 。

See also finished()和isFinished( ) 。

  1. QNetworkReply.setHeader (self, QNetworkRequest.KnownHeaders header, QVariant value)

设置已知的头header有利用价值value。标题的相应的原始表格将被设置为好。

See also header( )setRawHeader()和QNetworkRequest.setHeader( ) 。

  1. QNetworkReply.setOperation (self, QNetworkAccessManager.Operation operation)

设置为是此对象的相关操作operation。这个值将被退回operation( ) 。

注:在创建这个对象,而不是再次改变时,操作应设置。

See also operation()和setRequest( ) 。

  1. QNetworkReply.setRawHeader (self, QByteArray headerName, QByteArray value)

设置原始标题headerName有利用价值value。如果headerName以前设置,它将被重写。具有相同名称的多个HTTP头在功能上等同于串联的值,用逗号分隔的一个单头。

If headerName匹配一个已知的头,值value将被解析和相应的解析形式也将被设置。

See also rawHeader( )header( )setHeader()和QNetworkRequest.setRawHeader( ) 。

  1. QNetworkReply.setReadBufferSize (self, int size)

设置读缓冲要的大小size字节。读缓冲区存放的数据正在被下载的断网,然后才读缓冲区QIODevice.read( ) 。设置缓冲区大小为0,将使缓冲区无限的大小。

QNetworkReply会试图阻止从网络读取一次该缓冲区已满(即,bytesAvailable()返回size或更多) ,从而导致下载到踩下油门为好。如果缓冲区不局限于在大小,QNetworkReply会尝试从网络中尽可能快地下载。

不像QAbstractSocket.setReadBufferSize( )QNetworkReply不能在读取缓冲区大小保证精度。即,bytesAvailable( )可以返回多个size

See also readBufferSize( ) 。

  1. QNetworkReply.setRequest (self, QNetworkRequest request)

设置相关的请求此对象是request。这个值将被退回request( ) 。

注:在创建这个对象,而不是再次改变时,该请求应该被设置。

See also request()和setOperation( ) 。

  1. QNetworkReply.setSslConfiguration (self, QSslConfiguration configuration)

设置与此请求关联的网络连接的SSL配置,如果可能的话,是说的config

See also sslConfiguration( ) 。

  1. QNetworkReply.setUrl (self, QUrl url)

设置被加工成的网址url。通常,该URL匹配被张贴的请求,但对各种原因也可以是不同的(例如,被制成一个文件路径的绝对或规范) 。

See also url( )request()和QNetworkRequest.url( ) 。

  1. QSslConfiguration QNetworkReply.sslConfiguration (self)

[

返回与此相关的答复,如果已使用SSL SSL配置和状态。它将包含远程服务器的证书,其证书链导致的证书颁发机构,以及在使用中的加密密码。

]($docs-qsslconfiguration.html)

同行的证书,其证书链会的时候被称为sslErrors()被发射,如果它的发射。

See also setSslConfiguration( ) 。

  1. QUrl QNetworkReply.url (self)

[

返回下载或上传的内容的URL 。注意,这个URL可以是从原始请求的不同。

]($docs-qurl.html)

See also request( )setUrl()和QNetworkRequest.url( ) 。

  1. int QNetworkReply.writeData (self, str data)

Qt Signal Documentation

  1. void downloadProgress (qint64,qint64)

这是该信号的默认超载。

这个信号被发射,以指示该网络请求的下载部分的进展,如果有任何。如果没有与此请求关联的下载,这个信号将被一次使用0作为发射两者的值bytesReceivedbytesTotal

bytesReceived参数表示接收的字节数,而bytesTotal表示预期要被下载的总字节数。如果不知道要被下载的字节数,bytesTotal将为-1 。

下载完成时bytesReceived等于bytesTotal。在那个时候,bytesTotal不会是-1。

注意,这两个值bytesReceivedbytesTotal可以从不同的size( ) ,获得通过的总字节数read()或readAll() ,或标头( ContentLengthHeader )的值。其理由是,有可能是协议开销或数据可能在下载过程中被压缩。

See also uploadProgress()和bytesAvailable( ) 。

  1. void error (QNetworkReply::NetworkError)

这是该信号的默认超载。

当答复检测处理错误这个信号被发射。该finished()信号可能会遵循,这表明连接已经结束。

code参数包含检测到的错误代码。通话errorString( )取得的错误条件的文本表示。

Note:不要删除对象连接到这个信号的插槽。使用deleteLater( ) 。

See also error()和errorString( ) 。

  1. void finished ()

这是该信号的默认超载。

当回复已完成处理这个信号被发射。之后此信号被发射,将没有更多的更新到应答的数据或元数据。

除非close( )被调用时,答复将仍然打开进行读取,所以数据可以通过调用来检索read()或readAll( ) 。特别是,如果没有调用read()被提了出来的结果readyRead( ) ,调用readAll( )将获取的全部内容QByteArray

这个信号在配合发出QNetworkAccessManager.finished( )该信号的答复参数是这个对象。

Note:不要删除对象连接到这个信号的插槽。使用deleteLater( ) 。

您也可以使用isFinished()来检查一个QNetworkReply您收到成品( )信号前完成均匀。

See also setFinished( )QNetworkAccessManager.finished()和isFinished( ) 。

  1. void metaDataChanged ()

这是该信号的默认超载。

这个信号被发射时在此回复的元数据更改。元数据是不是内容(数据)本身,包括网络报头的任何信息。在大多数情况下,元数据将完全由被接收数据的第一个字节时已知的。然而,能够将数据的处理过程中接收标题或其他元数据的更新。

See also header( )rawHeaderList( )rawHeader()和hasRawHeader( ) 。

  1. void sslErrors (const QList<QSslError>&)

这是该信号的默认超载。

这个信号被发射,如果SSL / TLS会话期间,成立了包括证书验证错误,遇到错误。该errors参数包含错误的列表。

为了表明这些错误不是致命的,而连接应进行,ignoreSslErrors()函数应该被称为从连接到该信号的时隙。如果它不叫, SSL会话将被推倒的任何数据交换(包括URL)之前。

这个信号可以被用来显示一个错误消息,指示安全性可能会受到影响的用户,并显示在SSL设置(见sslConfiguration()来获取它) 。如果用户决定继续进行远程证明分析后,槽应调用ignoreSslErrors( ) 。

See also QSslSocket.sslErrors( )QNetworkAccessManager.sslErrors( )sslConfiguration()和ignoreSslErrors( ) 。

  1. void uploadProgress (qint64,qint64)

这是该信号的默认超载。

这个信号被发射,以指示该网络请求的载部分的进展,如果有任何。如果没有与该请求相关联的上载,该信号将不会被发射。

bytesSent参数表示上传的字节数,而bytesTotal指示要被上传的总字节数。如果不能确定要上载的字节数,bytesTotal将为-1 。

上传完成后,当bytesSent等于bytesTotal。在那个时候,bytesTotal不会是-1。

See also downloadProgress( ) 。