qt之fillder抓包
2016-07-11 17:11
274 查看
最近项目中使用到了Qt的网络库,在用的过程中也发现了不少坑和问题,本文仅仅作为记录,方便日后查阅。
因为我们整个客户端的gui都是使用qt来完成的,心想qt既然有网络库,而且真心觉着qt封装的控件还是不错的,所以就使用了qt的网络库,说实话qt的网络库封装的确实比较好用,所以开发过程就有条不紊的进行着,一直也没有遇到什么比较大的问题,直到开发完大半部分网络模块,交由产品测试时出现了一个问题(还是测试同志比较给力啊),测试同学发现使用fillder抓不到qt的网络请求包,这虽然对开发来说不是什么大问题,但这总给测试同学带来了一些问题,最后网上查找了一些资料,才发现这是一个坑,qt的网络请求需要设置代理才能被fillder抓到包。有了这个提示之后,也就只需简简单单的几行代码就可以帮助fillder抓到包,代码如下:
为个别套接字设置代理的另一种方法是使用QAbstractSocket::setProxy()和QTcpServer::setProxy()。这种情况下,可以使用以下方式禁用代理:
相关的设置网络代理文章:Qt之QNetworkProxy
上边说到的这个坑不能算是特别大,但是我们还发现qt网络库其他的小问题,导致项目有严重的crash(到目前为止我们是发现了这个问题,但有可能通过其他路径解决),搞不好qt的网络库都会被我们替换掉,毕竟市面上开源的网络库并且比较稳定的也不少,比如libcurl、boost::asio、等(点此了解)。经过我们测试同学细心的测试后发现了几个问题,如下:
1、在网络请求发生阶段,如果主事件循环退出,则出现假死
2、主线程中使用异步请求时收不到finished信号
3、工作线程中使用同步收不到finished信号
这3个问题看似都能避免,但都是比较大的坑。而且很容易导致程序出现异常。
逼逼了这么多,感觉qt的网络库还是不太靠谱啊,还需要继续完善,后边如果网络库这块儿还有变动,我会重新写一篇文章来描述问题的解决方案。
因为我们整个客户端的gui都是使用qt来完成的,心想qt既然有网络库,而且真心觉着qt封装的控件还是不错的,所以就使用了qt的网络库,说实话qt的网络库封装的确实比较好用,所以开发过程就有条不紊的进行着,一直也没有遇到什么比较大的问题,直到开发完大半部分网络模块,交由产品测试时出现了一个问题(还是测试同志比较给力啊),测试同学发现使用fillder抓不到qt的网络请求包,这虽然对开发来说不是什么大问题,但这总给测试同学带来了一些问题,最后网上查找了一些资料,才发现这是一个坑,qt的网络请求需要设置代理才能被fillder抓到包。有了这个提示之后,也就只需简简单单的几行代码就可以帮助fillder抓到包,代码如下:
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);
相关的设置网络代理文章:Qt之QNetworkProxy
上边说到的这个坑不能算是特别大,但是我们还发现qt网络库其他的小问题,导致项目有严重的crash(到目前为止我们是发现了这个问题,但有可能通过其他路径解决),搞不好qt的网络库都会被我们替换掉,毕竟市面上开源的网络库并且比较稳定的也不少,比如libcurl、boost::asio、等(点此了解)。经过我们测试同学细心的测试后发现了几个问题,如下:
1、在网络请求发生阶段,如果主事件循环退出,则出现假死
2、主线程中使用异步请求时收不到finished信号
3、工作线程中使用同步收不到finished信号
这3个问题看似都能避免,但都是比较大的坑。而且很容易导致程序出现异常。
逼逼了这么多,感觉qt的网络库还是不太靠谱啊,还需要继续完善,后边如果网络库这块儿还有变动,我会重新写一篇文章来描述问题的解决方案。
相关文章推荐
- Qt学习之路(40): QTreeWidget
- 在QTP中,经常会遇到需要写入外部文件的地方,比如写Log什么的,这时,可以使用下面代码进行写Txt操作。
- qt QPalette的应用
- QtWayland
- Qt Creator 和在 vs2010 里 怎么添加信号和槽
- Qt智能指针
- Qt之添加Windows资源文件(.rc文件)
- Qt之添加Windows资源文件(.rc文件)
- Qt之添加Windows资源文件(.rc文件)
- QTP与word、excel、txt
- Qt学习之路(39): QListWidget
- qt 设置背景
- Qt学习之路(38): model-view架构
- Qt学习之路(37): Qt容器类之关联存储容器
- Qt学习之路(36): Qt容器类之遍历器和隐式数据共享
- Qt学习之路(35): Qt容器类之顺序存储容器
- Qt学习之路(34): 国际化(下)
- Qt学习之路(33): 国际化(上)
- Qt5中文乱码问题
- Qt5.3.2(OpenGL)交叉编译