一、概述
QNetworkRequest 类是网络访问API的一部分,是一个工具类,它包含了通过网络发送请求所需的信息。它包含一个URL和一些可用于修改请求的辅助信息。这个URL一般最匹配的就是 Http协议的,在构造url的时候最常用的其实就是设置头,设置一个路径。这个QNetworkRequest对象一般其实就是一个属性配置类,会被 QNetworkAccessManager 发起请求的。有过 python、js发起http请求的经验,其实就明白啦。
URL 的话其实就是一系列网络协议的集合
稍微了解一些 WEB 编程的基础就知道类似下面的图
如果不太清楚,可以参考下面博主写的博客看看
URL 格式
http协议概述
二、注意要点
有了这些协议的基础要点,那我们就知道,在组装一个URL 的时候,需要指定一个协议和路径,同时还要设置一些 http请求的头部属性,就是通过 setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) 来实现。
也就是 将已知报头的值设置为value,覆盖之前设置的任何报头。该操作还设置了等效的原始HTTP头。也即是可以重复设置值,这个如果有多个报头的键,就可以多次设置的。
也可以用 setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) 完成,基本一样的。
最经典的使用如下:
QNetworkRequest request;
//设置url
request.setUrl(QUrl("http://qt-project.org"));
// 设置头
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));
一般我们在发起请求的时候我们还会传递一些参数,参数的话一般就是通过,QHttpPart, QHttpMultiPart来组装参数。