使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com)

另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章:

Qt 之 QNetworkAccessManager踏坑记录-CSDN博客

C++ Qt开发:QNetworkAccessManager网络接口组件

阅读目录

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QNetworkAccessManager组件实现Web网页访问。

QNetworkAccessManager是Qt网络模块中的关键类,用于管理网络访问和请求。作为一个网络请求的调度中心,它为Qt应用程序提供了发送和接收各种类型的网络请求的能力,包括常见的GET、POST、PUT、DELETE等。这个模块的核心功能在于通过处理QNetworkReplyQNetworkRequest来实现与网络资源的交互。

通过QNetworkAccessManager,Qt应用程序能够轻松地与远程服务器通信,获取数据或将数据上传到服务器。这种网络请求的管理不仅是异步的,以确保不会阻塞主线程,还提供了丰富的信号和槽机制,使得开发者可以灵活地处理不同阶段的网络操作。

通常,QNetworkAccessManager会与QNetworkReplyQNetworkRequest一起使用。QNetworkRequest用于封装和配置网络请求的各种属性,例如URL、请求头等。而QNetworkReply则代表了对网络请求的响应,包含了请求返回的数据和相关信息。这三者共同协作,为Qt应用程序提供了便捷、灵活且强大的网络通信能力。

回到顶部

1.1 通用API函数

1.1.1 QNetworkAccessManager

要想实现网络通信首先需要新建一个网络访问管理器,以下是QNetworkAccessManager类中的一些常用函数及其描述:

函数 描述
QNetworkAccessManager(QObject *parent = nullptr) 构造函数,创建一个QNetworkAccessManager实例。
virtual ~QNetworkAccessManager() 虚析构函数,释放QNetworkAccessManager实例。
QNetworkReply *get(const QNetworkRequest &request) 发送GET请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data) 发送POST请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data) 发送POST请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data) 发送PUT请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data) 发送PUT请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *deleteResource(const QNetworkRequest &request) 发送DELETE请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *head(const QNetworkRequest &request) 发送HEAD请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr) 发送自定义请求,并返回与请求关联的QNetworkReply对象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data) 发送自定义请求,并返回与请求关联的QNetworkReply对象。
void setConfiguration(const QNetworkConfiguration &config) 设置网络配置,用于定制网络行为。
QNetworkConfiguration configuration() const 获取当前网络配置。
void clearAccessCache() 清除网络访问缓存。
void setCache(QAbstractNetworkCache *cache) 设置网络缓存。
QAbstractNetworkCache *cache() const 获取当前网络缓存。
void setCookieJar(QNetworkCookieJar *cookieJar) 设置用于管理HTTP cookie的QNetworkCookieJar
QNetworkCookieJar *cookieJar() const 获取当前的HTTP cookie管理器。

这些函数提供了QNetworkAccessManager的核心功能,使得开发者能够方便地进行各种类型的网络请求,配置网络参数,并进行相关的网络管理操作。

1.1.2 QNetworkReply

以下是QNetworkReply类中的一些常用函数及其描述:

函数 描述
QByteArray readAll() const 读取所有可用的数据,并返回一个QByteArray,包含从网络回复读取的所有内容。
QByteArray peek(int maxSize) const 查看最多maxSize字节的可用数据,但不从缓冲区中移除。
QByteArray read(int maxSize) 从网络回复中读取最多maxSize字节的数据,并将其从缓冲区中移除。
QByteArray readLine(int maxSize = 0) 从网络回复中读取一行数据,最多包含maxSize字节,并将其从缓冲区中移除。
void ignoreSslErrors(const QList<QSslError> &errors = QList<QSslError>()) 忽略SSL错误,继续处理网络回复。
void abort() 终止网络回复的处理,关闭底层连接。
void close() 关闭网络回复的处理。
QUrl url() const 返回与网络回复相关联的URL。
QNetworkRequest request() const 返回生成此网络回复的网络请求。
QNetworkAccessManager *manager() const 返回与网络回复相关联的QNetworkAccessManager
bool isFinished() const 检查网络回复是否已完成。
QNetworkReply::NetworkError error() const 返回网络回复的错误代码。
bool hasRawHeader(const QByteArray &headerName) const 检查网络回复是否包含指定原始头。
QList<QByteArray> rawHeaderList() const 返回网络回复的所有原始头的列表。
QByteArray rawHeader(const QByteArray &headerName) const 返回指定原始头的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值