Qt之QNetworkProxy(网络代理)

简介: 简述 QNetworkProxy类提供了一个网络层代理。 QNetworkProxy提供了配置网络层代理支持Qt网络类的方法。目前支持的类有QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer和QNetworkAccessManager。 简述 介绍 网络请求 设置代理 效果 源码 介绍 代理被设
+关注继续查看

简述

QNetworkProxy类提供了一个网络层代理。

QNetworkProxy提供了配置网络层代理支持Qt网络类的方法。目前支持的类有QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer和QNetworkAccessManager。

介绍

代理被设计的尽可能透明。也就是说,你现有的网络应用程序使用下面的代码就会自动支持网络代理。

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(1080);
proxy.setUser("username");
proxy.setPassword("password");
QNetworkProxy::setApplicationProxy(proxy);

为个别套接字设置代理的另一种方法是使用QAbstractSocket::setProxy()和QTcpServer::setProxy()。这种情况下,可以使用以下方式禁用代理:

serverSocket->setProxy(QNetworkProxy::NoProxy);

网络请求

以HTTP/HTTPS为例,我们经常需要进行抓包来分析数据,这时,利用之前讲过的Fiddler来分析,可参考:Fiddler(Web/HTTP调试利器)

下面,通过调用天天动听的API来获取歌曲的信息,接口的使用不再赘述。

QNetworkAccessManager networkAccessManager;

QUrl url("http://search.dongting.com/song/search/old");

// 设置请求参数
QUrlQuery query;
query.addQueryItem("q", QString::fromLocal8Bit("李荣浩"));
query.addQueryItem("page", "1");
query.addQueryItem("size", "100");

url.setQuery(query);

QNetworkRequest request;
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
request.setUrl(url);

// 开始请求
QNetworkReply *pReply = networkAccessManager.get(request);

QEventLoop loop;
connect(pReply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();

// 获取歌曲信息
QByteArray bytes = pReply->readAll();

设置代理

打开Fiddler,并没有抓取到想要的信息,Why,因为我们没有设置网络代理。。。

这时,只需要简单地几行代码就可以搞定了。

效果

这里写图片描述

源码

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("127.0.0.1");
proxy.setPort(8888);
...
networkAccessManager.setProxy(proxy);

这时,所有的信息都尽收眼底。。。O(∩_∩)O~

目录
相关文章
|
9天前
|
数据采集 大数据 Java
9月青果网络代理IP测试,最新代理IP质量测试,有没有好的代理IP推荐?
秉着对真相的探究,我购买青果网络HTTP代理进行测试供大家参考。那一起看看测试结果吧!
|
29天前
GitHub的PUSH显示网络超时,小乌龟网络代理办法
GitHub的PUSH显示网络超时,小乌龟网络代理办法
32 0
|
3月前
|
Shell
Mac终端配置网络代理
Mac终端配置网络代理
63 0
|
4月前
|
缓存 网络协议 应用服务中间件
「网络架构」网络代理第二部分:Nginx作为转发HTTP代理
「网络架构」网络代理第二部分:Nginx作为转发HTTP代理
|
4月前
|
Web App开发 网络协议 应用服务中间件
「网络架构」网络代理第一部分: 代理概述
「网络架构」网络代理第一部分: 代理概述
|
4月前
|
网络协议 Linux 网络安全
Macos 配置ProxyChains设置网络代理
Macos 配置ProxyChains设置网络代理
441 0
|
5月前
|
Windows Perl
网络基础 Windows下安装和配置net-snmp 代理
网络基础 Windows下安装和配置net-snmp 代理
413 0
|
7月前
|
网络安全 Android开发 Windows
如何让手机共享电脑代理网络的WIFI热点
如何让手机共享电脑代理网络的WIFI热点
1391 0
如何让手机共享电脑代理网络的WIFI热点
|
8月前
网络正确,就是不能上网,检查WIN10代理设置
网络正确,就是不能上网,检查WIN10代理设置
56 0
网络正确,就是不能上网,检查WIN10代理设置
相关产品
云迁移中心
推荐文章
更多
推荐镜像
更多