qt之fiddler抓包


    最近項目中使用到了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的網絡庫還是不太靠譜啊,還需要繼續完善,后邊如果網絡庫這塊兒還有變動,我會重新寫一篇文章來描述問題的解決方案。

如果您覺得文章不錯,不妨給個 打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!! 

 

  


很重要--轉載聲明

  1. 本站文章無特別說明,皆為原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords
  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM