当前位置: 首页 > news >正文

做搜狗网站排名软件长春网络建站模板

做搜狗网站排名软件,长春网络建站模板,ps做网站如何,深圳网站的建设在 Qt 框架中进行 HTTP 通信时,最核心的三个类是:QNetworkAccessManager: 网络请求的管理者;QNetworkRequest: 用于封装请求的细节;QNetworkReply: 用于封装服务器返回的响应。一、QNetworkRequest —— 网络请求的描述者 1.1 类定…

在 Qt 框架中进行 HTTP 通信时,最核心的三个类是:

  • QNetworkAccessManager: 网络请求的管理者;

  • QNetworkRequest: 用于封装请求的细节;

  • QNetworkReply: 用于封装服务器返回的响应。


一、QNetworkRequest —— 网络请求的描述者

1.1 类定义与作用

QNetworkRequest 是用于封装一次 HTTP 请求的所有元信息的类,包括:

  • 请求 URL;
  • 请求头部信息;
  • 缓存策略;
  • 超时属性等。

1.2 构造函数

QNetworkRequest();
QNetworkRequest(const QUrl &url);

通常我们直接传入目标地址:

QNetworkRequest request(QUrl("https://api.example.com/data"));

1.3 设置请求头

通过 setRawHeader()setHeader() 设置常用 HTTP 头:

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setRawHeader("User-Agent", "MyQtApp/1.0");

常用枚举值有:

Header 枚举说明
ContentTypeHeader设置 MIME 类型(如 JSON)
UserAgentHeader客户端信息
ContentLengthHeader设置正文长度
LocationHeader重定向位置

1.4 其他属性设置

可以用 setAttribute() 设置附加属性,如:

request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);

二、QNetworkReply —— 网络响应的容器

2.1 类定义与作用

QNetworkReplyQIODevice 的子类,用于接收并读取来自服务器的响应内容。

它包含:

  • 响应状态码;
  • 响应头部;
  • 响应体数据;
  • 网络错误信息等。

2.2 读取响应内容

最常见的用法是等待请求完成后读取所有数据:

QByteArray response = reply->readAll();

配合事件循环等待异步完成:

QEventLoop loop;
QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();

2.3 错误处理

if (reply->error() != QNetworkReply::NoError) {qWarning() << "Request failed:" << reply->errorString();
}

QNetworkReply::NetworkError 提供了丰富的错误枚举,例如:

  • ConnectionRefusedError
  • TimeoutError
  • HostNotFoundError
  • ContentNotFoundError

2.4 获取状态码和头部

int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();

三、结合示例讲解完整流程

以下是一个完整的 GET 请求流程代码,并在每步配合类讲解。

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QEventLoop>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 1. 创建网络管理器QNetworkAccessManager manager;// 2. 构建请求QUrl url("https://jsonplaceholder.typicode.com/posts/1");QNetworkRequest request(url);// 设置请求头request.setRawHeader("User-Agent", "QtNetworkClient/1.0");request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");// 3. 发送 GET 请求QNetworkReply *reply = manager.get(request);// 4. 等待请求完成(阻塞)QEventLoop loop;QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);loop.exec();// 5. 处理响应if (reply->error() == QNetworkReply::NoError) {QByteArray data = reply->readAll();int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();qDebug() << "Status:" << statusCode;qDebug() << "Response:" << data;} else {qWarning() << "Network error:" << reply->errorString();}// 6. 清理资源reply->deleteLater();return 0;
}

四、进阶用法拓展

4.1 POST 请求(发送表单或 JSON)

QByteArray json = R"({"title": "foo", "body": "bar"})";
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkReply *reply = manager.post(request, json);

4.2 异步请求处理

推荐用信号槽非阻塞处理:

QObject::connect(reply, &QNetworkReply::finished, []() {qDebug() << "Request finished!";
});

五、总结

类名作用
QNetworkRequest描述 HTTP 请求,包括 URL、header、属性等
QNetworkReply封装服务器响应,包括数据、状态码、错误等
用法核心发出请求(GET/POST)后读取 reply 内容
http://www.dtcms.com/a/570431.html

相关文章:

  • 常州专业网站建设做互助盘网站找哪家好
  • 建设银行企业网银网站过期wordpress wp head
  • 山东网站开发公司注册资金认缴和实缴区别
  • GRPC详解
  • wordpress 站点主页长春建设局网站处长
  • CAN(二)——错误帧
  • 分布式锁的特点
  • 网站制作价格多少钱wordpress带会员
  • 加速度计如何助力大型无人机飞得更稳、更准、更智能?
  • 网站动画效果用什么程序做的装修设计软件 知乎
  • 光刻胶分类与特性:正性胶和负性胶以及SU-8厚胶和AZ 1500 系列光刻胶(上)
  • 网站建设能挣钱网站正在建设中php
  • 苏州企业网站制作报价山西响应式网站哪家好
  • 33-蓝桥杯报名通知
  • 基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
  • 高青外贸公司网站建设怎么建设游网站主页
  • 财务部官方网站经济建设司网站建设做网站多少钱
  • 塑料机械怎么做网站模板之家如何免费下载
  • 济南正宗网站建设平台网站板块策划
  • Java设计模式精讲---01工厂方法模式
  • Nacos 综合漏洞利用工具 | 更新V3.0.5
  • 西宁网站建设排名花店如何做推广
  • 建博客网站重庆移动网站建设
  • 禅城网站建设联系电话电商平台系统开发
  • 知名做网站费用制作网页可以用
  • 给城市建设提议献策的网站wordpress logo更换
  • 商户查询更新缓存(opsForHash、opsForList、ObjectMapper、@Transactional、@PutMapping、装箱拆箱、线程池)
  • 做网站用dw的多吗武山县建设局网站
  • FPGA—ZYNQ学习GPIO-EMIO,MIO,AXIGPIO(五)
  • 移动端网站和app区别2021年给我一个网站