class QNetworkRequest#

QNetworkRequest 存储了要使用 QNetworkAccessManager 发送的请求。更多...

概述#

方法#

注意

此文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式来告知我们

详细描述#

QNetworkRequest是网络访问API的一部分,是包含发送网络请求所需信息的类。它包含一个URL和一些辅助信息,可用于修改请求。

class KnownHeaders#

已知的头部类型列表,QNetworkRequest可以解析。每个已知的头部都以原始形式表示,并包含其完整的HTTP名称。

常量

描述

QNetworkRequest.ContentDispositionHeader

对应于HTTP Content-Disposition头部,包含一个包含位置类型(例如,附件)和参数(例如,文件名)的字符串。

QNetworkRequest.ContentTypeHeader

对应于HTTP Content-Type头部,包含一个包含媒体(MIME)类型和任何辅助数据(例如,字符集)的字符串。

QNetworkRequest.ContentLengthHeader

对应于HTTP Content-Length头部,包含传输数据的长度的字节数。

QNetworkRequest.LocationHeader

对应于HTTP Location头,包含一个表示数据实际位置的URL,包括重定向时的目标URL。

QNetworkRequest.LastModifiedHeader

对应于HTTP Last-Modified头,包含一个表示内容最后修改日期的QDateTime。

QNetworkRequest.IfModifiedSinceHeader

对应于HTTP If-Modified-Since头,包含一个QDateTime。它通常添加到QNetworkRequest 。如果资源自那时起未更改,服务器应发送304(未修改)响应。

QNetworkRequest.ETagHeader

对应于HTTP ETag头,包含一个表示内容最后修改状态的QString。

QNetworkRequest.IfMatchHeader

对应于HTTP If-Match头,包含一个QStringList。它通常添加到QNetworkRequest 。如果资源不匹配,服务器应发送412(预处理失败)响应。

QNetworkRequest.IfNoneMatchHeader

对应于HTTP If-None-Match头,包含一个QStringList。如果资源匹配,服务器应发送304(未修改)响应。

QNetworkRequest.CookieHeader

对应于HTTP Cookie头,包含表示要发送回服务器的cookie的QList<QNetworkCookie>。

QNetworkRequest.SetCookieHeader

对应于HTTP Set-Cookie头,包含表示由服务器发送并在本地存储的cookie的QList<QNetworkCookie>。

QNetworkRequest.UserAgentHeader

由HTTP客户端发送的User-Agent头。

QNetworkRequest.ServerHeader

HTTP客户端接收到的Server头。

class Attribute#

用于QNetworkRequestQNetworkReply的属性代码。

属性是额外的元数据,用于控制请求的行为并将更多信息从响应传递回应用程序。属性也是可扩展的,允许自定义实现传递自定义值。

下表说明了默认属性代码、相关联的QVariant类型、属性缺失时的默认值以及它是否用于请求或响应。

常量

描述

QNetworkRequest.HttpStatusCodeAttribute

仅回复,类型:QMetaType::Int(无默认值)表示从HTTP服务器接收到的HTTP状态码(如200、304、404、401等)。如果连接不是基于HTTP的,则此属性将不存在。

QNetworkRequest.HttpReasonPhraseAttribute

仅回复,类型:QMetaType::QByteArray(无默认值)表示从HTTP服务器接收到的HTTP原因短语(如“Ok”、“Found”、“Not Found”、“Access Denied”等)。这是状态码的可读表示(见上文)。如果连接不是基于HTTP的,则此属性将不存在。

QNetworkRequest.RedirectionTargetAttribute

仅回复,类型:QMetaType::QUrl(无默认值)如果存在,表示服务器正在将请求重定向到不同的URL。默认情况下,网络访问API会遵循重定向(除非使用ManualRedirectPolicy)。此外,如果使用UserVerifiedRedirectPolicy,则如果未遵循重定向,此属性将被设置。返回的URL可能为相对路径。使用QUrl::resolved()将其转换为绝对URL。

QNetworkRequest.ConnectionEncryptedAttribute

仅回复,类型:QMetaType::Bool(默认:false)表示数据是否通过加密(安全)连接获得。

QNetworkRequest.CacheLoadControlAttribute

请求仅用,类型:QMetaType::Int(默认:PreferNetwork)控制缓存如何被访问。可能的值是CacheLoadControl的值。请注意,默认的QNetworkAccessManager实现不支持缓存。但是,此属性可以由某些后端用于修改请求(例如,用于缓存代理)。

QNetworkRequest.CacheSaveControlAttribute

请求仅用,类型:QMetaType::Bool(默认:true)控制获取的数据是否应保存到缓存以供未来使用。如果值为false,则获取的数据将不会自动缓存。如果为true,如果数据可缓存(可缓存的取决于所使用的协议),则可以缓存数据。

QNetworkRequest.SourceIsFromCacheAttribute

仅回复,类型:QMetaType::Bool(默认:false)表示数据是从缓存获取的还是其他方式获取的。

QNetworkRequest.DoNotBufferUploadDataAttribute

请求仅用,类型:QMetaType::Bool(默认:false)表示是否允许QNetworkAccessManager代码缓存上传数据(例如,在执行HTTP POST时)。当使用此标志并按顺序上传数据时,必须设置ContentLengthHeader头。

QNetworkRequest.HttpPipeliningAllowedAttribute

请求仅用,类型:QMetaType::Bool(默认:false)表示是否允许QNetworkAccessManager代码使用此请求的HTTP流水线。

QNetworkRequest.HttpPipeliningWasUsedAttribute

仅回复,类型:QMetaType::Bool表示是否使用HTTP流水线接收此回复。

QNetworkRequest.CustomVerbAttribute

仅请求,类型:QMetaType::QByteArray 存储发送自定义HTTP动词(用于GET、POST、PUT和DELETE以外的动词)的值。此动词在调用sendCustomRequest() 时设置。

QNetworkRequest.CookieLoadControlAttribute

仅请求,类型:QMetaType::Int(默认:Automatic)指示是否在请求中发送‘Cookie’头。此属性在Qt WebKit创建跨源XMLHttpRequest时设置为false,当JavaScript创建请求且未明确将withCredentials设置为true时。更多信息请参阅此处。(此值自4.7版引入。)

QNetworkRequest.CookieSaveControlAttribute

仅请求,类型:QMetaType::Int(默认:Automatic)指示是否保存请求的服务器回复中接收到的‘Cookie’头。在Qt WebKit创建跨源XMLHttpRequest时,如果JavaScript创建请求且未明确将withCredentials设置为true,则此属性设置为false。更多信息请参阅此处。(此值自4.7版引入。)

QNetworkRequest.AuthenticationReuseAttribute

仅请求,类型:QMetaType::Int(默认:Automatic)指示是否在请求中使用可供使用的缓存认证凭据。如果此设置为Manual 且认证机制为‘Basic’或‘Digest’,Qt将不会发送带有请求URL的任何缓存凭据的‘Authorization’ HTTP头。在Qt WebKit创建跨源XMLHttpRequest时,如果JavaScript创建请求且未明确将withCredentials设置为true,则此属性设置为Manual。更多信息请参阅此处。(此值自4.7版引入。)

QNetworkRequest.BackgroundRequestAttribute

类型:QMetaType::Bool(默认:false)指示这是背景传输而不是用户发起的传输。根据平台不同,背景传输可能受到不同的策略约束。

QNetworkRequest.Http2AllowedAttribute

仅请求,类型:QMetaType::Bool(默认:true)指示是否允许QNetworkAccessManager 使用HTTP/2。此属性适用于SSL请求或当设置Http2CleartextAllowedAttribute时,允许明文HTTP/2。这是针对请求是否允许使用HTTP/2的属性。

QNetworkRequest.Http2WasUsedAttribute

仅回复,类型:QMetaType::Bool(默认:false)指示接收到此回复是否使用了HTTP/2。(此值自5.9版引入。)

QNetworkRequest.EmitAllUploadProgressSignalsAttribute

仅请求,类型:QMetaType::Bool(默认:false)指示是否应发出所有上传信号。默认情况下,默认只在上传进度为100毫秒间隔时发出。此值自5.5版引入。

QNetworkRequest.OriginalContentLengthAttribute

仅回复,类型为 QMetaType::Int。在无效并被从头部移除之前,该属性保存原始内容长度。在数据压缩且请求被标记为自动解压缩时,此值被移除。 (此值在5.9版本中引入。)

QNetworkRequest.RedirectPolicyAttribute

仅请求,类型:QMetaType::Int,应该是之一:RedirectPolicy 值(默认: NoLessSafeRedirectPolicy)。(此值在5.9版本中引入。)

QNetworkRequest.Http2DirectAttribute

仅请求,类型:QMetaType::Bool(默认:false)。如果设置此属性,则强制QNetworkAccessManager在无初始HTTP/2协议协商的情况下使用HTTP/2协议。使用此属性假定了特定服务器支持HTTP/2。如果设置Http2CleartextAllowedAttribute,则该属性与SSL或明文HTTP/2兼容。如果指定HTTP/2直接,但服务器不支持HTTP/2,则QNetworkAccessManager会放弃尝试,而不会回退到HTTP/1.1。如果同时设置了Http2AllowedAttribute和Http2DirectAttribute,则Http2DirectAttribute具有优先级。(此值在5.11版本中引入。)

QNetworkRequest.AutoDeleteReplyOnFinishAttribute

仅请求,类型:QMetaType::Bool(默认:false)。如果设置,则此属性会在发出“finished”后,使QNetworkAccessManager删除QNetworkReply。 (此值在5.14版本中引入。)

QNetworkRequest.ConnectionCacheExpiryTimeoutSecondsAttribute

仅请求,类型:QMetaType::Int。在处理完最后一个挂起的请求后,应关闭到服务器的TCP连接(HTTP1和HTTP2)。 (此值在6.3版本中引入。)

QNetworkRequest.Http2CleartextAllowedAttribute

仅请求,类型:QMetaType::Bool(默认:false)。如果设置,此属性会指示QNetworkAccessManager尝试通过明文(也称为h2c)升级到HTTP/2。在Qt 7之前,可以通过设置QT_NETWORK_H2C_ALLOWED环境变量来覆盖此属性的默认值。如果未设置Http2AllowedAttribute,则忽略此属性。 (此值在6.3版本中引入。)

QNetworkRequest.UseCredentialsAttribute

仅请求,类型:QMetaType::Bool(默认:false)。指示基于XMLHttpRequest的跨站点Access-Control请求是否应使用身份验证信息。对同源请求没有影响。这仅影响WebAssembly平台。(此值在6.5版本中引入。)

QNetworkRequest.User

特殊类型。可以通过QVariants传递额外信息,类型从User到UserMax。默认的Network Access实现会忽略此范围内的任何请求属性,并且在该范围内的回复中不会生成任何属性。此范围保留给QNetworkAccessManager的扩展使用。

QNetworkRequest.UserMax

特殊类型。参见User。

class CacheLoadControl#

控制QNetworkAccessManager 的缓存机制。

常量

描述

QNetworkRequest.AlwaysNetwork

始终从网络加载,不检查缓存是否有有效的条目(类似于浏览器中的“重新加载”功能);另外,强制中间缓存重新验证。

QNetworkRequest.PreferNetwork

默认值;如果缓存条目比网络条目旧,则从网络加载。这将从缓存中返回旧数据,但会重新验证已过期的资源。

QNetworkRequest.PreferCache

如有缓存,则从缓存加载,否则从网络加载。请注意,这可能从缓存返回可能过时(但未过期)的项目。

QNetworkRequest.AlwaysCache

仅加载缓存,如果项目未缓存,则指示错误(即脱机模式)

class LoadControl#

指示请求加载机制是否被手动覆盖,例如Qt WebKit覆盖。

常量

描述

QNetworkRequest.Automatic

默认值:指示默认行为。

QNetworkRequest.Manual

指示行为已被手动覆盖。

class Priority#

枚举列出了可能的网络请求优先级。

常量

描述

QNetworkRequest.HighPriority

高优先级

QNetworkRequest.NormalPriority

普通优先级

QNetworkRequest.LowPriority

低优先级

class RedirectPolicy#

指示是否应自动遵循HTTP重定向响应或不遵循。

常量

描述

QNetworkRequest.ManualRedirectPolicy

不遵循任何重定向。

QNetworkRequest.NoLessSafeRedirectPolicy

默认值:仅允许“http”→“http”、“http”→“https”或“https”→“https”的重定向。

QNetworkRequest.SameOriginRedirectPolicy

需要相同的协议、主机和端口。注意,http://example.comhttp://example.com:80 将失败,使用此策略(隐式/显式端口被认为是匹配失败)。

QNetworkRequest.UserVerifiedRedirectPolicy

客户端通过处理QNetworkReply对象上的redirected()信号,发射redirectAllowed()来决定是否遵循每个重定向或终止以拒绝重定向来决定是否遵循每个重定向。这可以用于例如询问用户是否接受重定向,或根据某些应用程序特定配置来做出决策。

注意

当Qt处理重定向时,为了兼容性原因,在服务器返回301或302响应时,它将使用GET方法发出重定向请求,无论原始方法是什么,除非它是HEAD。

class TransferTimeoutConstant#

可以用于启用具有预设值传输超时的一个常量。

常量

描述

QNetworkRequest.DefaultTransferTimeoutConstant

传输超时(毫秒)。如果没有参数调用setTimeout(),将使用此值。

__init__(other)#
参数::

其他QNetworkRequest

创建 other 的副本。

__init__()

构建一个没有请求 URL 的 QNetworkRequest 对象。使用 setUrl() 方法来设置 URL。

另请参阅

url() setUrl()

__init__(url)
参数::

urlQUrl

构建一个 QNetworkRequest 对象,使用 url 作为请求的 URL。

另请参阅

url() setUrl()

attribute(code[, defaultValue=None])#
参数::
返回类型::

对象

返回与代码 code 相关联的属性。如果没有设置属性,则返回 defaultValue

注意

此函数不应用 Attribute 中列出的默认值。

另请参阅

setAttribute() Attribute

decompressedSafetyCheckThreshold()#
返回类型::

int

返回归档炸弹检查的阈值。

如果返回的解压大小小于此值,Qt 将直接解压,而不会进行进一步检查。

hasRawHeader(headerName)#
参数::

headerName – str

返回类型::

bool

如果网络请求中存在原始头 headerName,则返回 true

注意

在 6.7 版本之前的 Qt 版本中,此函数仅接受 QByteArray。

header(header)#
参数::

headerKnownHeaders

返回类型::

对象

如果请求中存在已知的网络头 header,则返回其值。如果不存在,则返回 QVariant()(即一个无效的变体)。

http2Configuration()#
返回类型::

QHttp2Configuration

返回当前 QNetworkAccessManager 使用于该请求及其底层 HTTP/2 连接的参数。这可能是之前由应用程序设置或默认配置。

QNetworkAccessManager 使用默认值如下

  • 连接级别的流量控制窗口大小为 2147483647 个八字节

  • 流级别的流量控制窗口大小为 214748364 个八字节

  • 最大帧大小为 16384

默认情况下,禁用服务器推送,启用 Huffman 压缩和字符串索引。

另请参阅

setHttp2Configuration

maximumRedirectsAllowed()#
返回类型::

int

返回此请求允许跟随的最大重定向数。

__ne__(other)#
参数::

其他QNetworkRequest

返回类型::

bool

如果此对象不与 other 相同,则返回 false

另请参阅

operator==()

__eq__(other)#
参数::

其他QNetworkRequest

返回类型::

bool

如果此对象与 other 相同(即它们具有相同的 URL、相同的头和相同的元数据设置),则返回 true

另请参阅

operator!=()

originatingObject()#
返回类型::

QObject

返回发起此网络请求的对象的引用;如果没有设置或对象已毁坏,则返回 None

另请参阅

setOriginatingObject()

peerVerifyName()#
返回类型::

字符串

返回用于证书验证的设置的域名,由 setPeerVerifyName 设置。默认情况下返回空字符串。

另请参阅

setPeerVerifyName

priority()#
返回类型::

优先级

返回此请求的优先级。

另请参阅

setPriority()

rawHeader(headerName)#
参数::

headerName – str

返回类型::

QByteArray

返回头 headerName 的原始形式。如果不存在此类头,则返回空 QByteArray,这可能无法与存在但内容为空的头区分(使用 hasRawHeader() 查找头是否存在)。

原始头可以通过 setRawHeader()setHeader() 设置。

注意

在 6.7 版本之前的 Qt 版本中,此函数仅接受 QByteArray。

另请参阅

header() setRawHeader()

rawHeaderList()#
返回类型::

. QByteArray 列表

返回在此网络请求中设置的所有原始头部的列表。列表按设置头部的顺序排列。

setAttribute(code, value)#
参数::

设置与代码 code 关联的属性为 value。如果属性已设置,则忽略先前的值。特别地,如果 value 是无效的 QVariant,则取消设置属性。

另请参阅

attribute() Attribute

setDecompressedSafetyCheckThreshold(threshold)#
参数::

threshold – int

设置解压安全检查的阈值。

一些支持的压缩算法可以在一个微小的压缩文件中编码一个极其巨大的解压缩文件。只有在解压缩内容极其单调的情况下,这才能实现,对于真实可信传输的文件来说很少见:通常,这种极端高压缩比的文件是缓冲区溢出攻击的负载,或者服务拒绝(通过耗尽太多内存)攻击。因此,从微小压缩形式解压缩为巨大大小的文件最好被视为恶意软件。

如果回复的解压缩大小超过此阈值(默认为10 MiB,即10 * 1024 * 1024),Qt将对压缩比进行检查:如果这个比率不合理大(GZip和Deflate为40:1,Brotli和ZStandard为100:1),则该回复将被视为错误。将阈值设置为-1将禁用此检查。

setHeader(header, value)#
参数::

将已知的标题header的值设置为value,覆盖任何先前设置的标题。此操作还设置了等效的原始HTTP标题。

setHttp2Configuration(configuration)#
参数::

configurationQHttp2Configuration

configuration设置请求的HTTP/2参数。

注意

必须在发出请求之前设置配置。

注意

HTTP/2在网络中单个HTTP/2连接中交织多个流。这意味着QNetworkAccessManager将使用从发送到同一主机的请求系列中的第一个请求中找到的配置。

setMaximumRedirectsAllowed(maximumRedirectsAllowed)#
参数::

maximumRedirectsAllowed – 整数

将请求允许重定向的最大次数设置为 maxRedirectsAllowed

setOriginatingObject(object)#
参数::

objectQObject

允许设置发起请求的 object 的引用。

例如 Qt WebKit 将发起请求的 QWebFrame 设置为发起对象。

另请参阅

originatingObject()

setPeerVerifyName(peerName)#
参数::

peerName – 字符串

peerName 设置为证书验证的主机名,而不是用于 TCP 连接的主机名。

另请参阅

peerVerifyName

setPriority(priority)#
参数::

priorityPriority

将此请求的优先级设置为 priority

注意

priority 只是网络访问管理员的提示。它可以使用或忽略。目前,它用于 HTTP 以决定哪个请求应首先发送到服务器。

另请参阅

priority()

setRawHeader(headerName, value)#
参数::

警告

本节包含自动从 C++ 翻译到 Python 的代码片段,可能包含错误。

将头 headerName 设置为值为 headerValue。如果 headerName 与已知头(见 KnownHeaders )相关联,则将解析原始格式并设置相应的“烹饪”头。

例如

request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"))

也将设置已知报头LastModifiedHeader为解析日期的 QDateTime 对象。

注意

连续两次设置同一个报头会覆盖之前的设置。为了实现多个同名 HTTP 报头的功能,应将两个值连接起来,用逗号(“,”)分隔,并设置一个单独的原始报头。

setSslConfiguration(configuration)#
参数::

configurationQSslConfiguration

将此网络请求的 SSL 配置设置为 config。应用的是私钥、本地证书、TLS 协议(例如 TLS 1.3)、CA 证书和 SSL 后端允许使用的加密方式。

setTransferTimeout(timeout)#
参数::

timeout – int

timeout 设置为传输超时(毫秒)。

另请参阅

milliseconds) transferTimeout() transferTimeoutAsDuration()

setUrl(url)#
参数::

urlQUrl

设置此网络请求所引用的 URL 为 url

另请参阅

url()

sslConfiguration()#
返回类型::

QSslConfiguration

返回此网络请求的 SSL 配置。默认情况下,这和defaultConfiguration() 一样。

swap(other)#
参数::

其他QNetworkRequest

与另一个网络请求交换。此函数非常快速且永远不会失败。

transferTimeout()#
返回类型::

int

返回传输超时时间,单位为毫秒。

另请参阅

setTransferTimeout()

url()#
返回类型::

QUrl

返回此网络请求所引用的URL。

另请参阅

setUrl()