Qt之QNetworkProxy(网络代理)
2016-05-24 18:42
483 查看
简述
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~
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)
- qt 学习小节