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

qt QNetworkProxy详解

一、概述

QNetworkProxy通过设置代理类型、主机、端口和认证信息,可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类(如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等)配置网络层代理支持,并且代理支持被设计为尽可能透明,这意味着编写的现有启用网络的应用程序可以自动支持网络代理。

二、常用方法及概念

  • QNetworkProxy():构造一个默认的 QNetworkProxy 对象。
  • QNetworkProxy(ProxyType type,const QString &hostName = QString(),quint16 port =0,const Qstring &user = Qstring(), const QString &password = Qstring()):构造一个QNetworkProxy 对象,使用指定类型、主机名、端口、用户和密码进行初始化。
  • void setType(ProxyType type):设置代理的类型。
  • void setHostName(const Qstring &hostName):设置代理主机名
  • void setPort(quint16 port):设置代理端囗。
  • void setUser(const Qstring &user):设置代理用户名。
  • void setPassword(const QString &password):设置代理密码。
  • ProxyType type()const:返回代理类型
  • QString hostName()const:返回代理主机名,
  • quint16 port() const:返回代理端囗。
  • QString user()const:返回代理用户名
  • QString password()const:返回代理密码。
  • static void setApplicationProxy(const QNetworkProxy &proxy):设置应用程序范围内的默认代理。
  • static QNetworkProxy applicationProxy():返回应用程序范围内的默认代理。

代理类型(QNetworkProxy::ProxyType)

  • QNetworkProxy::DefaultProxy:使用平台默认的代理设置。
  • QNetworkProxy::Socks5Proxy:使用 Socks5 代理。
  • QNetworkProxy::HttpProxy:使用 HTTP 代理。
  • QNetworkProxy::HttpCachingProxy:使用 HTTP 缓存代理。
  • QNetworkProxy::FtpCachingProxy:使用 FTP 缓存代理
  • QNetworkProxy::NoProxy:不使用代理
// 设置HTTP代理
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(8080);
proxy.setUser("username");
proxy.setPassword("password");
QNetworkProxy::setApplicationProxy(proxy);

QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
connect(networkManager, &QNetworkAccessManager::finished, this, [&](QNetworkReply *reply)
{
	if (reply->error() == QNetworkReply::NoError) {
		// 请求成功
		QByteArray response = reply->readAll();
		qDebug() << "Response:" << response;
	} else {
		// 请求失败
		qDebug() << "Error:" << reply->errorString();
	}
	reply->deleteLater();
});
QNetworkRequest request(QUrl("http://www.example.com"));
networkManager->get(request); // GET 请求

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/news/363718.html

相关文章:

  • 文件摆渡系统选型指南:如何找到最适合您的数据安全解决方案?
  • Scala的trait特质
  • Python小游戏11——扑克牌消消看小游戏
  • 刷题 - 图论
  • SQL:字段a not in (筛选值 or 子查询),当字段a = null 或not in里面存在null时。sql筛选结果可能不符预期
  • Python 网络爬虫教程
  • git的安装以及入门使用
  • 手机照片怎么转换成jpg格式?分享6种图片格式转换方法
  • 【C语言】编译和链接(编译环境和运行环境)
  • Qt 中实现 HTTPS 请求的方法
  • ExecuteReader()简介
  • 输电线路杆塔基础沉降
  • Oracle Expdp按条件导出-指定表数据
  • 写一个 qq自动回话的程序
  • 模型的部署:服务端与客户端建立连接(Flask)
  • ESP32移植Openharmony设备开发---(6)Mutex互斥锁
  • 「亲测好用」6款热门电脑卸载工具分享,快来看看哪个适合你?
  • YOLOv11改进策略【卷积层】| RCS-OSA 通道混洗的重参数化卷积 二次创新C3k2
  • 展会亮点回顾|HMS汽车工业通信解决方案
  • java中Set,Map,List集合的比较(不包含增删改查函数方法)
  • YoloV8改进策略:卷积篇|大感受野的小波卷积
  • 【Pip】深入理解 `requirements.txt` 文件:Python 项目依赖管理的核心工具
  • electron-vite_11各平台 Electron 镜像存到哪里了?
  • Lua字符串
  • ARM嵌入式学习--第五天
  • 倪师学习笔记-天纪-斗数星辰介绍