一、概述
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 请求
觉得有帮助的话,打赏一下呗。。