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 请求

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

相关推荐
SNAKEpc121381 小时前
深入理解PyQtGraph核心组件交互
python·qt·pyqt
Henry Zhu1231 小时前
Qt Model/View架构详解(四):高级特性
开发语言·qt·架构
Henry Zhu1233 小时前
Qt Model/View架构详解(五):综合实战项目
开发语言·qt·架构
张健11564096484 小时前
Qt的面向接口编程和运行时动态加载
qt
Henry Zhu1234 小时前
Qt Model/View架构详解(二):内置视图与模型
开发语言·qt
chao1898444 小时前
在Qt中实现任意N阶贝塞尔曲线的绘制与动态调节
开发语言·qt
从此不归路9 小时前
Qt5 进阶【7】网络请求与 REST API 实战:QNetworkAccessManager 深度应用
开发语言·c++·qt
Henry Zhu1239 小时前
Qt Model/View架构详解(三):自定义模型
开发语言·qt
老歌老听老掉牙10 小时前
16宫格属性分析系统:打造专业级科学数据可视化工具
c++·qt·可视化
qq_3975623110 小时前
Qt_工程执行逻辑_窗口逻辑
开发语言·qt