本页内容

QNetworkRequest Class

QNetworkRequest 类用于保存要通过 `QNetworkAccessManager` 发送的请求。更多内容...

头文件: #include <QNetworkRequest>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

公共类型

enum Attribute { HttpStatusCodeAttribute, HttpReasonPhraseAttribute, RedirectionTargetAttribute, ConnectionEncryptedAttribute, CacheLoadControlAttribute, …, UserMax }
enum CacheLoadControl { AlwaysNetwork, PreferNetwork, PreferCache, AlwaysCache }
enum KnownHeaders { ContentDispositionHeader, ContentTypeHeader, ContentLengthHeader, LocationHeader, LastModifiedHeader, …, ServerHeader }
enum LoadControl { Automatic, Manual }
enum Priority { HighPriority, NormalPriority, LowPriority }
enum RedirectPolicy { ManualRedirectPolicy, NoLessSafeRedirectPolicy, SameOriginRedirectPolicy, UserVerifiedRedirectPolicy }
enum TransferTimeoutConstant { DefaultTransferTimeoutConstant }

公共函数

QNetworkRequest()
QNetworkRequest(const QUrl &url)
QNetworkRequest(const QNetworkRequest &other)
~QNetworkRequest()
QVariant attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue = QVariant()) const
(since 6.2) qint64 decompressedSafetyCheckThreshold() const
bool hasRawHeader(QAnyStringView headerName) const
QVariant header(QNetworkRequest::KnownHeaders header) const
(since 6.8) QHttpHeaders headers() const
(since 6.5) QHttp1Configuration http1Configuration() const
QHttp2Configuration http2Configuration() const
int maximumRedirectsAllowed() const
QObject *originatingObject() const
QString peerVerifyName() const
QNetworkRequest::Priority priority() const
QByteArray rawHeader(QAnyStringView headerName) const
QList<QByteArray> rawHeaderList() const
void setAttribute(QNetworkRequest::Attribute code, const QVariant &value)
(since 6.2) void setDecompressedSafetyCheckThreshold(qint64 threshold)
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
(since 6.8) void setHeaders(QHttpHeaders &&newHeaders)
(since 6.8) void setHeaders(const QHttpHeaders &newHeaders)
(since 6.5) void setHttp1Configuration(const QHttp1Configuration &configuration)
void setHttp2Configuration(const QHttp2Configuration &configuration)
void setMaximumRedirectsAllowed(int maxRedirectsAllowed)
void setOriginatingObject(QObject *object)
void setPeerVerifyName(const QString &peerName)
void setPriority(QNetworkRequest::Priority priority)
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
void setSslConfiguration(const QSslConfiguration &config)
(since 6.11) void setTcpKeepAliveIdleTimeBeforeProbes(std::chrono::seconds idle)
(since 6.11) void setTcpKeepAliveIntervalBetweenProbes(std::chrono::seconds interval)
(since 6.11) void setTcpKeepAliveProbeCount(int probes)
void setTransferTimeout(int timeout)
(since 6.7) void setTransferTimeout(std::chrono::milliseconds duration = DefaultTransferTimeout)
void setUrl(const QUrl &url)
QSslConfiguration sslConfiguration() const
void swap(QNetworkRequest &other)
(since 6.11) std::chrono::seconds tcpKeepAliveIdleTimeBeforeProbes() const
(since 6.11) std::chrono::seconds tcpKeepAliveIntervalBetweenProbes() const
(since 6.11) int tcpKeepAliveProbeCount() const
int transferTimeout() const
(since 6.7) std::chrono::milliseconds transferTimeoutAsDuration() const
QUrl url() const
bool operator!=(const QNetworkRequest &other) const
QNetworkRequest &operator=(const QNetworkRequest &other)
bool operator==(const QNetworkRequest &other) const

静态公共成员

const std::chrono::std::chrono::milliseconds DefaultTransferTimeout

详细说明

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

另请参阅 QNetworkReply 和QNetworkAccessManager 。

成员类型文档

enum QNetworkRequest::Attribute

QNetworkRequest 和QNetworkReply 的属性代码。

属性是用于控制请求行为并将回复中的进一步信息传递回应用程序的额外元数据。属性还具有可扩展性,允许自定义实现传递自定义值。

下表说明了默认属性代码、关联的QVariant 类型、该属性缺失时的默认值,以及该属性是在请求中还是在响应中使用。

常量值描述
QNetworkRequest::HttpStatusCodeAttribute0仅用于响应,类型:QMetaType::Int (无默认值) 指示从 HTTP 服务器接收的 HTTP 状态码(如 200、304、404、401 等)。如果连接并非基于 HTTP,则不会出现此属性。
QNetworkRequest::HttpReasonPhraseAttribute1仅限响应,类型:QMetaType::QByteArray (无默认值) 表示从 HTTP 服务器接收到的 HTTP 原因短语(如“Ok”、“Found”、“Not Found”、“Access Denied”等)。这是状态码(见上文)的人类可读表示形式。 如果连接不是基于 HTTP 的,则不会出现此属性。注意:使用 HTTP/2 时不使用原因短语。
QNetworkRequest::RedirectionTargetAttribute2仅限响应,类型:QMetaType::QUrl (无默认值)若存在,则表示服务器正在将请求重定向到另一个 URL。默认情况下,网络访问 API 会跟随重定向,除非使用了QNetworkRequest::ManualRedirectPolicy 。此外,如果使用了QNetworkRequest::UserVerifiedRedirectPolicy ,且未跟随重定向,则会设置此属性。 返回的 URL 可能是相对路径。请使用QUrl::resolved() 将其转换为绝对 URL。
QNetworkRequest::ConnectionEncryptedAttribute3仅限响应,类型:QMetaType::Bool (默认:false) 指示数据是否通过加密(安全)连接获取。
QNetworkRequest::CacheLoadControlAttribute4仅限请求,类型:QMetaType::Int (默认:QNetworkRequest::PreferNetwork ) 控制如何访问缓存。可能的值与QNetworkRequest::CacheLoadControl 中的值相同。请注意,默认的QNetworkAccessManager 实现不支持缓存。但是,某些后端(例如缓存代理)可以使用此属性来修改其请求。
QNetworkRequest::CacheSaveControlAttribute5仅限请求,类型:QMetaType::Bool (默认:true) 控制获取的数据是否应保存到缓存中以供将来使用。如果值为 false,获取的数据将不会被自动缓存。如果为 true,数据可能会被缓存,前提是该数据可缓存(哪些数据可缓存取决于所使用的协议)。
QNetworkRequest::SourceIsFromCacheAttribute6仅限响应,类型:QMetaType::Bool (默认:false) 指示数据是否来自缓存。
QNetworkRequest::DoNotBufferUploadDataAttribute7仅限请求,类型:QMetaType::Bool (默认:false) 指示是否允许QNetworkAccessManager 代码缓冲上传数据,例如在执行 HTTP POST 时。当将此标志与顺序上传数据一起使用时,必须设置ContentLengthHeader 头。
QNetworkRequest::HttpPipeliningAllowedAttribute8仅限请求,类型:QMetaType::Bool (默认:false) 指示QNetworkAccessManager 代码是否允许对此请求使用 HTTP 管道传输。
QNetworkRequest::HttpPipeliningWasUsedAttribute9仅限响应,类型:QMetaType::Bool 指示接收此响应时是否使用了 HTTP 管道。
QNetworkRequest::CustomVerbAttribute10仅限请求,类型:QMetaType::QByteArray 保存要发送的自定义 HTTP 动词的值(用于 GET、POST、PUT 和 DELETE 以外的其他动词)。调用QNetworkAccessManager::sendCustomRequest() 时会设置此动词。
QNetworkRequest::CookieLoadControlAttribute11仅限请求,类型:QMetaType::Int (默认值:QNetworkRequest::Automatic ) 指示是否在请求中发送“Cookie”头。当创建跨源 XMLHttpRequest 时,如果创建该请求的 JavaScript 代码未显式将 withCredentials 设置为 true,Qt WebKit 会将此属性设为 false。 更多信息请参见此处。(此值自 4.7 版本起引入。)
QNetworkRequest::CookieSaveControlAttribute13仅限请求,类型:QMetaType::Int (默认:QNetworkRequest::Automatic ) 指示是否保存服务器在响应请求时返回的“Cookie”头部。 当创建跨源 XMLHttpRequest 时,如果创建该请求的 JavaScript 未将 withCredentials 显式设置为 true,Qt WebKit 会将此属性设置为 false。更多信息请参见此处。(此值自 4.7 版起引入。)
QNetworkRequest::AuthenticationReuseAttribute12仅限请求,类型:QMetaType::Int (默认:QNetworkRequest::Automatic ) 指示是否在请求中使用缓存的授权凭据(如有)。如果此属性设置为QNetworkRequest::Manual ,且身份验证机制为“Basic”或“Digest”,则 Qt 不会在请求的 URL 中发送包含任何缓存凭据的“Authorization”HTTP 头。 当创建跨源 XMLHttpRequest 时,如果创建该请求的 JavaScript 代码未显式将 withCredentials 设置为 true,Qt WebKit 会将此属性设置为QNetworkRequest::Manual 。更多信息请参见此处。(此值自 4.7 版本起引入。)
QNetworkRequest::BackgroundRequestAttribute17类型:QMetaType::Bool (默认:false) 表示这是一次后台传输,而非用户发起的传输。根据平台的不同,后台传输可能受不同策略的约束。
QNetworkRequest::Http2AllowedAttribute19仅限请求,类型:QMetaType::Bool (默认:true) 指示是否允许QNetworkAccessManager 代码在此请求中使用HTTP/2。这适用于SSL请求,或在设置了Http2CleartextAllowedAttribute时适用的“明文”HTTP/2。
QNetworkRequest::Http2WasUsedAttribute20仅限响应,类型:QMetaType::Bool (默认:false) 指示接收此响应时是否使用了 HTTP/2。(此值自 5.9 版起引入。)
QNetworkRequest::EmitAllUploadProgressSignalsAttribute18仅限请求,类型:QMetaType::Bool (默认:false) 指示是否应发出所有上传信号。默认情况下,uploadProgress 信号仅以 100 毫秒为间隔发出。(此值自 5.5 版本起引入。)
QNetworkRequest::OriginalContentLengthAttribute21仅限响应,类型:QMetaType::Int 保存原始 content-length 属性,当数据被压缩且请求被标记为自动解压缩时,该属性会在被无效化并从标头中移除之前被保留。(此值自 5.9 版本起引入。)
QNetworkRequest::RedirectPolicyAttribute22仅限请求,类型:QMetaType::Int ,应为QNetworkRequest::RedirectPolicy 中的某个值(默认:NoLessSafeRedirectPolicy )。(该值自5.9版本起引入。)
QNetworkRequest::Http2DirectAttribute23仅限请求,类型:QMetaType::Bool (默认:false)。若设置此属性,将强制QNetworkAccessManager 在不进行初始 HTTP/2 协议协商的情况下使用 HTTP/2 协议。使用此属性意味着已事先知晓特定服务器支持 HTTP/2。该属性在 SSL 环境下有效;若设置了 Http2CleartextAllowedAttribute,则在“明文”HTTP/2 环境下同样有效。 如果指定了 HTTP/2 Direct,但服务器实际上不支持 HTTP/2,则QNetworkAccessManager 会直接放弃连接,而不会尝试回退到 HTTP/1.1。如果同时设置了 Http2AllowedAttribute 和 Http2DirectAttribute,则 Http2DirectAttribute 具有优先级。(此值在 5.11 版本中引入。)
QNetworkRequest::AutoDeleteReplyOnFinishAttribute25仅限请求,类型:QMetaType::Bool (默认:false)若设置此属性,QNetworkAccessManager 将在发出“finished”信号后删除QNetworkReply 。(该值自 5.14 版本起引入。)
QNetworkRequest::ConnectionCacheExpiryTimeoutSecondsAttribute26仅限请求,类型:QMetaType::Int 控制在最后一个待处理请求处理完毕后,何时应关闭与服务器的 TCP 连接(HTTP1 和 HTTP2)。若未设置,则使用 120 秒的默认超时时间。 将此参数设置为负值(例如 -1)将禁用此请求的连接缓存:该连接不会被存储在缓存中或从缓存中检索,且将在请求完成后立即关闭。将其设置为 0 表示连接在使用期间会被共享,但一旦队列中没有内容,该连接将立即被释放。 正值指定自定义过期超时时间(以秒为单位)。(此值自 6.3 版本起引入。)
QNetworkRequest::Http2CleartextAllowedAttribute27仅限请求,类型:QMetaType::Bool (默认:false)如果设置此属性,将指示QNetworkAccessManager 尝试通过明文(也称为 h2c)升级到 HTTP/2。 在 Qt 7 之前,可以通过设置 QT_NETWORK_H2C_ALLOWED 环境变量将该属性的默认值覆盖为 true。如果未设置 Http2AllowedAttribute,则该属性将被忽略。(该值自 6.3 版本起引入。)
QNetworkRequest::UseCredentialsAttribute28仅限请求,类型:QMetaType::Bool (默认:false) 指示底层 XMLHttpRequest 的跨站 Access-Control 请求是否应使用凭据进行。对同源请求无效。此属性仅影响 WebAssembly 平台。(该值自 6.5 版起引入。)
QNetworkRequest::FullLocalServerNameAttribute29仅限请求,类型:QLocalSocket (默认:false) 存储用于底层 的完整本地服务器名称。当QLocalSocket 对简单名称的行为不足以满足需求时,QNetworkAccessManager 会使用此属性连接到特定的本地服务器。QNetworkRequest 中的URL仍必须使用unix+http:或local+http:方案。且URL中的主机名将用于HTTP请求中的Host头。(该值自6.8版本起引入。)
QNetworkRequest::User1000特殊类型。可以通过类型范围从 User 到 UserMax 的 QVariant 传递附加信息。Network Access 的默认实现将忽略该范围内的任何请求属性,并且在响应中也不会生成该范围内的任何属性。该范围专用于QNetworkAccessManager 的扩展。
QNetworkRequest::UserMax32767特殊类型。参见 User。

enum QNetworkRequest::CacheLoadControl

控制QNetworkAccessManager 的缓存机制。

常量值描述
QNetworkRequest::AlwaysNetwork0始终从网络加载,且不检查缓存中是否有有效的条目(类似于浏览器中的“重新加载”功能);此外,强制中间缓存重新验证。
QNetworkRequest::PreferNetwork1默认值;如果缓存条目比网络条目旧,则从网络加载。这绝不会从缓存中返回过期数据,但会重新验证已过期的资源。
QNetworkRequest::PreferCache2如果缓存中存在,则从缓存加载;否则从网络加载。请注意,这可能会从缓存中返回已过期(但未过期)的项目。
QNetworkRequest::AlwaysCache3仅从缓存加载,如果项目未被缓存则报错(即离线模式)

enum QNetworkRequest::KnownHeaders

QNetworkRequest 可解析的已知标头类型列表。每个已知标头均以原始形式呈现,并附有其完整的 HTTP 名称。

常量值描述
QNetworkRequest::ContentDispositionHeader6对应于 HTTP Content-Disposition 头,包含一个字符串,该字符串包含处置类型(例如,attachment)和一个参数(例如,filename)。
QNetworkRequest::ContentTypeHeader0对应于 HTTP Content-Type 头,包含一个字符串,其中包含媒体(MIME)类型和任何辅助数据(例如,字符集)。
QNetworkRequest::ContentLengthHeader1对应于 HTTP Content-Length 头,包含所传输数据的字节长度。
QNetworkRequest::LocationHeader2对应于 HTTP Location 头,包含一个表示数据实际位置的 URL,包括重定向情况下的目标 URL。
QNetworkRequest::LastModifiedHeader3对应于 HTTP Last-Modified 头,包含一个QDateTime ,表示内容的最后修改日期。
QNetworkRequest::IfModifiedSinceHeader9对应于 HTTP If-Modified-Since 头,包含一个QDateTime 。它通常添加到QNetworkRequest 中。如果资源自该时间以来未发生更改,服务器应发送 304(未修改)响应。
QNetworkRequest::ETagHeader10对应于 HTTP ETag 头,并包含一个QString ,表示内容的最后修改状态。
QNetworkRequest::IfMatchHeader11对应于 HTTP If-Match 头,并包含一个QStringList 。它通常添加到QNetworkRequest 中。如果资源不匹配,服务器应返回 412(先决条件失败)响应。
QNetworkRequest::IfNoneMatchHeader12对应于 HTTP If-None-Match 头,并包含一个QStringList 。它通常附加于QNetworkRequest 之后。如果资源匹配,服务器应返回 304(未修改)响应。
QNetworkRequest::CookieHeader4对应于 HTTP Cookie 头,并包含一个QList<QNetworkCookie>,表示要发回给服务器的 Cookie。
QNetworkRequest::SetCookieHeader5对应于 HTTP Set-Cookie 头,包含一个QList<QNetworkCookie>,表示服务器发送的、需在本地存储的 Cookie。
QNetworkRequest::UserAgentHeader7由 HTTP 客户端发送的 User-Agent 报头。
QNetworkRequest::ServerHeader8HTTP 客户端接收的 Server 头。

另请参阅 header()、setHeader()、rawHeader() 和setRawHeader()。

enum QNetworkRequest::LoadControl

指示请求的加载机制的某个方面是否已被手动覆盖,例如由 Qt WebKit 覆盖。

常量值描述
QNetworkRequest::Automatic0默认值:表示默认行为。
QNetworkRequest::Manual1表示行为已被手动覆盖。

enum QNetworkRequest::Priority

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

常量值描述
QNetworkRequest::HighPriority1高优先级
QNetworkRequest::NormalPriority3正常优先级
QNetworkRequest::LowPriority5低优先级

enum QNetworkRequest::RedirectPolicy

指示网络访问 API 是否应自动跟随 HTTP 重定向响应。

常量值描述
QNetworkRequest::ManualRedirectPolicy0不跟随任何重定向。
QNetworkRequest::NoLessSafeRedirectPolicy1默认值:仅允许“http”->“http”、“http”->“https”或“https”->“https”的重定向。
QNetworkRequest::SameOriginRedirectPolicy2要求协议、主机和端口相同。请注意,根据此策略,http://example.com 和 http://example.com:80 将会失败(隐式/显式端口被视为不匹配)。
QNetworkRequest::UserVerifiedRedirectPolicy3客户端通过处理 redirected() 信号来决定是否跟随每次重定向:若在QNetworkReply 对象上发出 redirectAllowed() 方法,则允许重定向;若中止或结束该方法,则拒绝重定向。例如,这可用于询问用户是否接受重定向,或根据某些应用程序特定的配置进行决策。

注意: 出于向后兼容性考虑,当 服务器返回 301 或 302 响应时,无论最初使用的是哪种方法(除非是 HEAD 方法),Qt在 处理重定向时都会 使用 GET 方法发送重定向请求。

enum QNetworkRequest::TransferTimeoutConstant

一个常量,可用于启用传输超时并设置预设值。

常量值描述
QNetworkRequest::DefaultTransferTimeoutConstant30000以毫秒为单位的传输超时时间。当调用setTransferTimeout() 且未传入参数时使用。

另请参阅 QNetworkRequest::DefaultTransferTimeout 。

成员函数文档

QNetworkRequest::QNetworkRequest()

创建一个不包含要请求的 URL 的 QNetworkRequest 对象。请使用setUrl() 来设置 URL。

另请参阅 url() 和setUrl()。

[explicit] QNetworkRequest::QNetworkRequest(const QUrl &url)

创建一个 QNetworkRequest 对象,其请求的 URL 为url 。

另请参阅 url() 和setUrl()。

QNetworkRequest::QNetworkRequest(const QNetworkRequest &other)

创建other 的副本。

[noexcept] QNetworkRequest::~QNetworkRequest()

释放QNetworkRequest 对象。

QVariant QNetworkRequest::attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue = QVariant()) const

返回与代码code 关联的属性。如果该属性尚未设置,则返回defaultValue 。

注意:此 函数不会应用QNetworkRequest::Attribute 中列出的默认值。

另请参阅 setAttribute() 和QNetworkRequest::Attribute 。

[since 6.2] qint64 QNetworkRequest::decompressedSafetyCheckThreshold() const

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

如果响应的解压后大小小于该阈值,Qt 将直接对其进行解压,不再进行进一步检查。

该函数在 Qt 6.2 中引入。

另请参阅 setDecompressedSafetyCheckThreshold()。

bool QNetworkRequest::hasRawHeader(QAnyStringView headerName) const

如果该网络请求中包含原始头headerName ,则返回true 。

注意:在 Qt 6.7 之前的版本中,此函数仅接受QByteArray 作为参数。

另请参阅 rawHeader() 和setRawHeader()。

如果该请求中包含已知的网络头header ,则返回其值;如果不包含,则返回QVariant()(即无效的变体)。

另请参阅 KnownHeaders 、rawHeader() 以及setHeader()。

[since 6.8] QHttpHeaders QNetworkRequest::headers() const

返回在此网络请求中设置的请求头。

该函数自 Qt 6.8 起引入。

另请参阅 setHeaders()。

[since 6.5] QHttp1Configuration QNetworkRequest::http1Configuration() const

返回QNetworkAccessManager 当前为该请求底层的HTTP/1连接所使用的参数。

该函数在 Qt 6.5 中引入。

另请参阅 setHttp1Configuration 。

QHttp2Configuration QNetworkRequest::http2Configuration() const

返回QNetworkAccessManager 当前用于此请求及其底层HTTP/2连接的参数。这些参数要么是应用程序先前设置的配置,要么是默认配置。

QNetworkAccessManager 使用的默认值如下:

  • 连接级流量控制的窗口大小为 2147483647 字节
  • 流级流量控制的窗口大小为 214748364 字节
  • 最大帧大小为 16384

默认情况下,服务器推送功能处于禁用状态,而霍夫曼压缩和字符串索引功能处于启用状态。

另请参阅 setHttp2Configuration 。

int QNetworkRequest::maximumRedirectsAllowed() const

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

另请参阅 setMaximumRedirectsAllowed()。

QObject *QNetworkRequest::originatingObject() const

返回对发起此网络请求的对象的引用;如果该引用未设置或对象已被销毁,则返回nullptr 。

另请参阅 setOriginatingObject()。

QString QNetworkRequest::peerVerifyName() const

返回为证书验证设置的主机名,该主机名由setPeerVerifyName 设定。默认情况下,此方法返回空字符串。

另请参阅 setPeerVerifyName 。

QNetworkRequest::Priority QNetworkRequest::priority() const

返回此请求的优先级。

另请参阅 setPriority()。

QByteArray QNetworkRequest::rawHeader(QAnyStringView headerName) const

返回标头headerName 的原始形式。如果不存在该标头,则返回一个空的QByteArray ,这可能与存在但无内容的标头无法区分(请使用hasRawHeader()来判断该标头是否存在)。

原始标头可通过setRawHeader() 或setHeader() 进行设置。

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

另请参阅 header() 和setRawHeader()。

QList<QByteArray> QNetworkRequest::rawHeaderList() const

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

另请参阅 hasRawHeader() 和rawHeader()。

void QNetworkRequest::setAttribute(QNetworkRequest::Attribute code, const QVariant &value)

将与代码code 关联的属性设置为值value 。如果该属性已设置,则丢弃之前的值。特别地,如果value 是一个无效的QVariant ,则该属性将被清除。

另请参阅 attribute() 和QNetworkRequest::Attribute 。

[since 6.2] void QNetworkRequest::setDecompressedSafetyCheckThreshold(qint64 threshold)

设置用于检测存档炸弹的threshold 。

某些受支持的压缩算法可以在一个微小的压缩文件中,编码出一个惊人巨大的解压文件。 这只有在解压内容极其单调的情况下才有可能,而对于以善意传输的真实文件来说,这种情况很少见:具有如此疯狂的高压缩比的文件通常是缓冲区溢出攻击或(通过消耗过多内存)拒绝服务攻击的有效载荷。 因此,解压后体积巨大的文件(尤其是来自微小压缩形式的文件)最好作为可疑恶意软件予以拒绝。

如果响应的解压大小超过此阈值(默认值为 10 MiB,即 10 * 1024 * 1024), Qt 将检查压缩比:若该值大得离谱(对于 GZip 和 Deflate 为 40:1,对于 Brotli 和 ZStandard 为 100:1),则该响应将被视为错误。将阈值设置为-1 可禁用此检查。

注意:此 检查仅检测压缩比异常高的响应。它不会对解压后的总输出大小施加绝对限制。保持适度压缩比的响应(例如 GZip 的 39:1)即使解压后达到任意大的大小,也不会触发此检查。 与不可信服务器通信的应用程序应监控 `QNetworkReply::bytesAvailable()` 或 `QNetworkReply::downloadProgress()`,并中止超过可接受大小的传输。

该函数在 Qt 6.2 中引入。

另请参阅 decompressedSafetyCheckThreshold()。

void QNetworkRequest::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)

将已知标头header 的值设置为value ,并覆盖之前设置的任何标头。此操作还会设置相应的原始HTTP标头。

另请参阅 KnownHeaders 、setRawHeader() 以及header()。

[since 6.8] void QNetworkRequest::setHeaders(QHttpHeaders &&newHeaders)

将newHeaders 设置为该网络请求的头部,并覆盖之前设置的任何头部。

如果某些标头与已知标头对应,则会解析其值,并同时设置相应的解析后形式。

此函数在 Qt 6.8 中引入。

另请参阅 headers() 和KnownHeaders 。

[since 6.8] void QNetworkRequest::setHeaders(const QHttpHeaders &newHeaders)

这是一个重载函数。

该函数是在 Qt 6.8 中引入的。

[since 6.5] void QNetworkRequest::setHttp1Configuration(const QHttp1Configuration &configuration)

从configuration 设置请求的 HTTP/1 参数。

该函数在 Qt 6.5 中引入。

另请参阅 http1Configuration 、QNetworkAccessManager 以及QHttp1Configuration 。

void QNetworkRequest::setHttp2Configuration(const QHttp2Configuration &configuration)

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

注意: 必须在发送请求之前完成配置。

注意:HTTP/2 会在单个 HTTP/2 连接中复用多个流。这意味着QNetworkAccessManager 将使用发送到同一主机的请求序列中第一个请求中的配置。

另请参阅 http2Configuration 、QNetworkAccessManager 以及QHttp2Configuration 。

void QNetworkRequest::setMaximumRedirectsAllowed(int maxRedirectsAllowed)

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

另请参阅 maximumRedirectsAllowed()。

void QNetworkRequest::setOriginatingObject(QObject *object)

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

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

另请参阅 originatingObject()。

void QNetworkRequest::setPeerVerifyName(const QString &peerName)

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

另请参阅 peerVerifyName 。

void QNetworkRequest::setPriority(QNetworkRequest::Priority priority)

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

注意: priority 仅是对网络访问管理器的提示 。它可以选择是否采用该提示。目前,该参数用于 HTTP 请求,以决定应将哪个请求优先发送至服务器。

另请参阅 priority()。

void QNetworkRequest::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)

将标头headerName 的值设置为headerValue 。如果headerName 对应于已知的标头(参见QNetworkRequest::KnownHeaders ),则会解析原始格式,并同时设置相应的“处理后”标头。

例如:

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

还将把已知标头LastModifiedHeader 设置为已解析数据的QDateTime 对象。

注意: 两次设置 相同的标头会覆盖之前的设置。若要实现多个同名 HTTP 标头的行为,应将两个值用逗号(",")分隔后拼接起来,并设置为一个原始标头。

注意:自 Qt 6.8 起,头字段名称会转换为小写以进行规范化处理。

另请参阅 KnownHeaders 、setHeader()、hasRawHeader() 以及rawHeader()。

void QNetworkRequest::setSslConfiguration(const QSslConfiguration &config)

将此网络请求的 SSL 配置设置为config 。适用的设置包括私钥、本地证书、TLS 协议(例如 TLS 1.3)、CA 证书以及 SSL 后端被允许使用的加密套件。

另请参阅 sslConfiguration() 和QSslConfiguration::defaultConfiguration()。

[since 6.11] void QNetworkRequest::setTcpKeepAliveIdleTimeBeforeProbes(std::chrono::seconds idle)

如果已启用 TCP 保持活动功能,则将连接处于空闲状态后 TCP 开始发送保持活动探测所需的时间设置为idle 。

该函数自 Qt 6.11 起引入。

另请参阅 tcpKeepAliveIdleTimeBeforeProbes()。

[since 6.11] void QNetworkRequest::setTcpKeepAliveIntervalBetweenProbes(std::chrono::seconds interval)

如果已启用 TCP Keepalive 功能,则将单个 Keepalive 探测之间的时间间隔设置为interval 。

该函数于 Qt 6.11 中引入。

另请参阅 tcpKeepAliveIntervalBetweenProbes()。

[since 6.11] void QNetworkRequest::setTcpKeepAliveProbeCount(int probes)

如果已启用 TCP Keepalive 功能,则设置 TCP 在断开连接前应发送的 keepaliveprobes 的最大数量。

该函数于 Qt 6.11 中引入。

另请参阅 tcpKeepAliveProbeCount()。

void QNetworkRequest::setTransferTimeout(int timeout)

将timeout 设置为传输超时时间(单位为毫秒)。

另请参阅 setTransferTimeout(std::chrono::milliseconds)、transferTimeout() 以及transferTimeoutAsDuration()。

[since 6.7] void QNetworkRequest::setTransferTimeout(std::chrono::milliseconds duration = DefaultTransferTimeout)

设置超时时间duration ,若未交换任何数据则中止传输。

如果在超时到期前未传输任何字节,则传输将被中止。零表示未设置计时器。如果未提供参数,超时时间为QNetworkRequest::DefaultTransferTimeout 。如果未调用此函数,则超时功能被禁用,且值为零。

该函数在 Qt 6.7 中引入。

另请参阅 transferTimeoutAsDuration()。

void QNetworkRequest::setUrl(const QUrl &url)

将此网络请求所指向的 URL 设置为url 。

另请参阅 url()。

QSslConfiguration QNetworkRequest::sslConfiguration() const

返回此网络请求的 SSL 配置。默认情况下,该配置与QSslConfiguration::defaultConfiguration() 中的配置相同。

另请参阅 setSslConfiguration() 和QSslConfiguration::defaultConfiguration()。

[noexcept] void QNetworkRequest::swap(QNetworkRequest &other)

将此网络请求与other 互换。该操作速度极快,且绝不会失败。

[since 6.11] std::chrono::seconds QNetworkRequest::tcpKeepAliveIdleTimeBeforeProbes() const

如果已启用 TCP Keepalive 功能,则返回连接处于空闲状态多长时间后,TCP 才会开始发送保持活动探测。

该函数在 Qt 6.11 中引入。

另请参阅 setTcpKeepAliveIdleTimeBeforeProbes()。

[since 6.11] std::chrono::seconds QNetworkRequest::tcpKeepAliveIntervalBetweenProbes() const

如果已启用 TCP Keepalive 功能,则返回单次保持活动探测之间的时间间隔。

该函数在 Qt 6.11 中引入。

另请参阅 setTcpKeepAliveIntervalBetweenProbes()。

[since 6.11] int QNetworkRequest::tcpKeepAliveProbeCount() const

如果已启用 TCP Keepalive 功能,则返回 TCP 在断开连接前应发送的保持活动探测的最大次数。

该函数于 Qt 6.11 中引入。

另请参阅 setTcpKeepAliveProbeCount()。

int QNetworkRequest::transferTimeout() const

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

如果 `transferTimeoutAsDuration()`.count() 无法用 `int` 表示,则该函数会返回 `INT_MAX` 或 `INT_MIN `。

另请参阅 setTransferTimeout() 和transferTimeoutAsDuration()。

[since 6.7] std::chrono::milliseconds QNetworkRequest::transferTimeoutAsDuration() const

返回超时时长,若在此期间未交换任何数据,则传输将被中止。

默认时长为零,这意味着不使用超时机制。

该函数在 Qt 6.7 中引入。

另请参阅 setTransferTimeout(std::chrono::milliseconds)。

QUrl QNetworkRequest::url() const

返回此网络请求所指向的 URL。

另请参阅 setUrl()。

bool QNetworkRequest::operator!=(const QNetworkRequest &other) const

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

另请参阅 operator==()。

QNetworkRequest &QNetworkRequest::operator=(const QNetworkRequest &other)

创建一个副本other

bool QNetworkRequest::operator==(const QNetworkRequest &other) const

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

另请参阅 operator!=()。

成员变量文档

const std::chrono::std::chrono::milliseconds QNetworkRequest::DefaultTransferTimeout

QNetworkRequest::TransferTimeoutConstant 毫秒的传输超时。当调用setTransferTimeout()时未传入参数,则使用此值。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.