Qt网络编程:QNetworkRequest、QNetworkReply

发布网友

我来回答

1个回答

热心网友

QNetworkRequest 描述了通过网络发送请求所需的信息,包括一个 URL 和辅助信息,这些信息可用于控制请求的行为或传递给应用程序。以下是 QNetworkRequest 的主要类型成员:



Attribute:用于控制请求行为并传递返回信息的属性,也是可扩展的,允许自定义实现传递自定义值。
CacheLoadControl:控制 QNetworkAccessManager 的缓存机制。
KnownHeaders:QNetworkRequest 解析的已知标头类型列表,每个已知标头以完整的 HTTP 名称表示。
LoadControl:指示请求加载机制的某个方面是否已被手动覆盖。
Priority:网络请求的优先级。
RedirectPolicy:网络访问 API 是否应自动遵循 HTTP 重定向响应。


以下是 QNetworkRequest 的成员函数:



setHttp2Configuration(configuration):设置 QNetworkAccessManager 用于此请求及其底层 HTTP/2 连接的参数。
rawHeaderList():返回在此网络请求中设置的所有原始标头的列表,按设置顺序排列。
setAttribute(code, value):设置属性值,如果该属性已设置,则丢弃先前的值;如果 value 为无效 QVariant,则属性未设置。
setMaximumRedirectsAllowed(maxRedirectsAllowed):设置此请求允许遵循的最大重定向数。
setOriginatingObject(object):设置发起当前请求的对象。
setPeerVerifyName(peerName):设置证书验证的主机名(非用于 TCP 连接的主机名)。
setPriority(priority):设置请求的优先级,优先级仅作为对 QNetworkAccessManager 的提示,可使用或不使用。
setRawHeader(headerName, headerValue):设置表头的值,两次设置相同的标题会覆盖之前的设置。对于多个同名 HTTP 标头,应将值用逗号分隔并设置为原始标头。
setSslConfiguration(config):设置此网络请求的 SSL 配置,适用于私钥、本地证书、SSL 协议(SSLv2、SSLv3、TLSv1.0)等设置。
setTransferTimeout(timeout):设置传输超时时间(毫秒),如果在超时到期之前没有传输字节,传输将被中止。零表示未设置计时器,调用此函数后超时值为 QNetworkRequest::DefaultTransferTimeoutConstant。
setUrl(url):设置此网络请求所指的 URL 为 url。


QNetworkReply 是 QNetworkAccessManager 发布请求的回复信息封装器,它继承自 QIODevice 类。以下是 QNetworkReply 的主要类型成员:



NetworkError:指示在处理请求期间发现的所有可能的错误情况。


以下是 QNetworkReply 的成员函数:



abort():立即中止操作并关闭所有仍打开的网络连接,将停止正在进行的上传,并发射 finished() 信号。
downloadProgress(bytesReceived, bytesTotal):发出此信号以指示此网络请求的下载部分的进度(如果有)。如果没有关联的下载,则发出一次信号,bytesReceived 和 bytesTotal 的值都为 0。
encrypted():发出此信号,表示 SSL/TLS 会话完成初始握手,可用于对证书链执行额外检查。
errorOccurred(code):当出现错误时发出此信号,code 参数包含检测到的错误代码。
finished():发出此信号,表示回复完成处理。发出此信号后,回复的数据不再更新。
ignoreSslErrors():忽略与网络连接相关的 SSL 错误,包括证书验证错误。
metaDataChanged():每当元数据发生更改时,都会发出此信号。
preSharedKeyAuthenticationRequired(authenticator):发出此信号,指示 SSL/TLS 握手协商 PSK 密码套件,需要 PSK 身份验证。
redirected(url):在请求中设置了 FollowRedirectsAttribute 并且服务器以 3xx 状态码在 location header 中返回有效 url 时,发出此信号,指示 HTTP 重定向。
redirectAllowed():当处理 redirected() 信号的客户端代码验证了新 URL 时,发出此信号以允许重定向继续进行。
sslErrors(errors):发出此信号,表示 SSL/TLS 会话在设置期间遇到错误,包括证书验证错误。
uploadProgress(bytesSent, bytesTotal):发出此信号,指示此网络请求的上传部分的进度(如果有)。
close():关闭此设备,丢弃未读数据,直到读完才释放网络资源。如果正在进行上传,它将一直持续到完成。
hasRawHeader(headerName):如果名称 headerName 的原始标头是由远程服务器发送的,返回 true。
ignoreSslErrors(errors):忽略列表中给出的 SSL 错误。
isFinished():回复完成或中止时返回 true。
isRunning():与 isFinished() 相反。
manager():返回用于创建此 QNetworkReply 对象的 QNetworkAccessManager。
rawHeaderList():返回远程服务器发送的标头字段列表,按发送顺序排列。
request():返回为此回复发布的请求,请求的 URL 可能与回复的 URL 不同。
rawHeader(headerName):返回远程服务器发送的标头 headerName 的原始内容,如果未发送标头,则返回空字节数组。
header(header):如果该标头是由远程服务器发送的,返回已知标头标头的值;如果未发送标头,则返回无效的 QVariant。
sslConfiguration():返回与此回复关联的 SSL 配置和状态。
url():返回下载或上传的内容的 URL,该 URL 可能与原始请求的 URL 不同。如果设置了 QNetworkRequest::FollowRedirectsAttribute,则返回正在访问的当前 URL。
readBufferSize():返回读取缓冲区的大小,以字节为单位,值为 0 表示读写缓冲区大小不受。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com