今天分析QNetworkAccessManager、QNetworkRequest和QNetworkReply組成的進階抽象API序列。在動手之前,把doc中有關QNetworkAccessManager的介紹看了一遍。其使用方法大緻是:
QNetworkAccessManager * manager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setUrl(QUrl("http://www.baidu.com"));
QNetworkReply * reply = manager->get(request);
connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
關鍵是後面的三行:設定URL、發送并擷取響應、讀取資料。
在QT自帶的例子中也有QNetworkAccessManager的應用:downloadmanager
單步跟蹤就用downloadmanager這個例子。
在動手跟蹤之前,總結了幾個問題:
1、QNetworkAccessManager是更進階的抽象,那麼怎麼跟QTcpSocket/QUdpSocket聯系起來的呢?
2、如果沒有跟QTcpSocket聯系起來,那麼又是怎麼跟WSA序列WinAPI聯系起來的呢?
3、整個邏輯過程是怎麼的呢?
4、擷取的(圖檔或者網頁)資料儲存在什麼地方?
5、跟HTTP或者FTP有關的Cookie、認證等怎麼實作的?
6、HTTP的Session相關功能實作了嗎?怎麼實作的?