- class QNetworkRequest#
类
QNetworkRequest
存储了要使用QNetworkAccessManager
发送的请求。更多...概述#
方法#
def
__init__()
def
attribute()
def
hasRawHeader()
def
header()
def
__ne__()
def
__eq__()
def
peerVerifyName()
def
priority()
def
rawHeader()
def
rawHeaderList()
def
setAttribute()
def
setHeader()
定义
setUrl()
定义
swap()
定义
url()
注意
此文档可能包含从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#
用于
QNetworkRequest
和QNetworkReply
的属性代码。属性是额外的元数据,用于控制请求的行为并将更多信息从响应传递回应用程序。属性也是可扩展的,允许自定义实现传递自定义值。
下表说明了默认属性代码、相关联的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.com 和 http://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。- __init__(url)
- 参数::
url –
QUrl
构建一个
QNetworkRequest
对象,使用url
作为请求的 URL。返回与代码
code
相关联的属性。如果没有设置属性,则返回defaultValue
。- decompressedSafetyCheckThreshold()#
- 返回类型::
int
返回归档炸弹检查的阈值。
如果返回的解压大小小于此值,Qt 将直接解压,而不会进行进一步检查。
- hasRawHeader(headerName)#
- 参数::
headerName – str
- 返回类型::
bool
如果网络请求中存在原始头
headerName
,则返回true
。- header(header)#
- 参数::
header –
KnownHeaders
- 返回类型::
对象
如果请求中存在已知的网络头
header
,则返回其值。如果不存在,则返回 QVariant()(即一个无效的变体)。- http2Configuration()#
- 返回类型::
返回当前
QNetworkAccessManager
使用于该请求及其底层 HTTP/2 连接的参数。这可能是之前由应用程序设置或默认配置。QNetworkAccessManager
使用默认值如下连接级别的流量控制窗口大小为 2147483647 个八字节
流级别的流量控制窗口大小为 214748364 个八字节
最大帧大小为 16384
默认情况下,禁用服务器推送,启用 Huffman 压缩和字符串索引。
- maximumRedirectsAllowed()#
- 返回类型::
int
返回此请求允许跟随的最大重定向数。
- __ne__(other)#
- 参数::
其他 –
QNetworkRequest
- 返回类型::
bool
如果此对象不与
other
相同,则返回false
。另请参阅
operator==()
- __eq__(other)#
- 参数::
其他 –
QNetworkRequest
- 返回类型::
bool
如果此对象与
other
相同(即它们具有相同的 URL、相同的头和相同的元数据设置),则返回true
。另请参阅
operator!=()
返回发起此网络请求的对象的引用;如果没有设置或对象已毁坏,则返回
None
。- peerVerifyName()#
- 返回类型::
字符串
返回用于证书验证的设置的域名,由
setPeerVerifyName
设置。默认情况下返回空字符串。另请参阅
返回此请求的优先级。
另请参阅
- rawHeader(headerName)#
- 参数::
headerName – str
- 返回类型::
返回头
headerName
的原始形式。如果不存在此类头,则返回空 QByteArray,这可能无法与存在但内容为空的头区分(使用hasRawHeader()
查找头是否存在)。原始头可以通过
setRawHeader()
或setHeader()
设置。- rawHeaderList()#
- 返回类型::
. QByteArray 列表
返回在此网络请求中设置的所有原始头部的列表。列表按设置头部的顺序排列。
设置与代码
code
关联的属性为value
。如果属性已设置,则忽略先前的值。特别地,如果value
是无效的 QVariant,则取消设置属性。另请参阅
- setDecompressedSafetyCheckThreshold(threshold)#
- 参数::
threshold – int
设置解压安全检查的阈值。
一些支持的压缩算法可以在一个微小的压缩文件中编码一个极其巨大的解压缩文件。只有在解压缩内容极其单调的情况下,这才能实现,对于真实可信传输的文件来说很少见:通常,这种极端高压缩比的文件是缓冲区溢出攻击的负载,或者服务拒绝(通过耗尽太多内存)攻击。因此,从微小压缩形式解压缩为巨大大小的文件最好被视为恶意软件。
如果回复的解压缩大小超过此阈值(默认为10 MiB,即10 * 1024 * 1024),Qt将对压缩比进行检查:如果这个比率不合理大(GZip和Deflate为40:1,Brotli和ZStandard为100:1),则该回复将被视为错误。将阈值设置为
-1
将禁用此检查。- setHeader(header, value)#
- 参数::
header –
KnownHeaders
value – 对象
将已知的标题
header
的值设置为value
,覆盖任何先前设置的标题。此操作还设置了等效的原始HTTP标题。- setHttp2Configuration(configuration)#
- 参数::
configuration –
QHttp2Configuration
从
configuration
设置请求的HTTP/2参数。注意
必须在发出请求之前设置配置。
注意
HTTP/2在网络中单个HTTP/2连接中交织多个流。这意味着
QNetworkAccessManager
将使用从发送到同一主机的请求系列中的第一个请求中找到的配置。- setMaximumRedirectsAllowed(maximumRedirectsAllowed)#
- 参数::
maximumRedirectsAllowed – 整数
将请求允许重定向的最大次数设置为
maxRedirectsAllowed
。允许设置发起请求的
object
的引用。例如 Qt WebKit 将发起请求的 QWebFrame 设置为发起对象。
另请参阅
- setPeerVerifyName(peerName)#
- 参数::
peerName – 字符串
将
peerName
设置为证书验证的主机名,而不是用于 TCP 连接的主机名。另请参阅
将此请求的优先级设置为
priority
。- setRawHeader(headerName, value)#
- 参数::
headerName –
QByteArray
value –
QByteArray
警告
本节包含自动从 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)#
- 参数::
configuration –
QSslConfiguration
将此网络请求的 SSL 配置设置为
config
。应用的是私钥、本地证书、TLS 协议(例如 TLS 1.3)、CA 证书和 SSL 后端允许使用的加密方式。- setTransferTimeout(timeout)#
- 参数::
timeout – int
将
timeout
设置为传输超时(毫秒)。另请参阅
milliseconds)
transferTimeout()
transferTimeoutAsDuration()
设置此网络请求所引用的 URL 为
url
。另请参阅
- sslConfiguration()#
- 返回类型::
返回此网络请求的 SSL 配置。默认情况下,这和
defaultConfiguration()
一样。- swap(other)#
- 参数::
其他 –
QNetworkRequest
与另一个网络请求交换。此函数非常快速且永远不会失败。
- transferTimeout()#
- 返回类型::
int
返回传输超时时间,单位为毫秒。
另请参阅
返回此网络请求所引用的URL。
另请参阅