2010-03-11 100 views
7

即時通訊與QtWebKit初學者構建簡單的Web框架,加載頁面(服務器端) ,當從這個頁面我提交數據我喜歡從服務器在C++端捕獲響應字符串 我可以那樣做嗎?如何在QtWebKit中獲得響應

+1

首先使用更多的標點符號和空白。會提高可讀性和可理解性。 – 2010-03-13 22:04:12

回答

1

您可以使用QNetworkReply類。 QWebPage實例有networkAccessManager()方法,該方法返回能夠發送請求和接收響應的QNetworkAccessManager實例。

您需要查找它的finished信號。

void QNetworkAccessManager::finished (QNetworkReply * reply)

每當 未決網絡回覆完成這個信號被髮射。 答覆參數將包含一個指針 到剛剛完成的答覆。

反過來QNetworkReplyQIODevice出承受因此你可以調用其readAll()方法,以便接收響應數據。

您可能還會發現this問題有用。

+0

這只是dosn't工作.. – user63898 2010-03-21 08:12:20

+1

我想做的完全相同的事情,這種方法似乎並沒有工作:當發出完成信號時,WebKit已經從回覆對象讀取所有數據,所以它只是不存在。 – Ghostrider 2010-05-12 06:13:58

8

我用Qt(我是新來的)修補了一下,並找到了一種方法來捕獲WebKit下載的所有資源。具體方法如下:

1)創建自己的QNetworkAccessManager

2)的子類在派生類,重載虛函數的createRequest

3)調用基類實現獲得響應對象。之後,你可以看看 的URL(或其他參數),並確定是否需要捕獲特定的資​​源或不

4)如果你 - readyRead信號連接到某些插槽,將捕捉到的數據

5)在插槽調用窺視功能來讀取數據,這樣的WebKit將得到的數據也

6)創建QWebPage對象後,調用setNetworkAccessManager並從步驟1)

通過你的子類的一個新創建的實例就是這樣 - 享受!

+0

這種方法的好處在於,它似乎在處理Content-Encoding:gzip和deflate,所以你不需要自己解壓縮數據 – Ghostrider 2010-05-12 08:27:15