我試圖在Qt的QWebView中攔截頁面/表單請求,並在某些情況下使用替代內容進行響應。在QWebView中覆蓋頁面回覆
QNetworkReply* ngcBrowser::createRequest(Operation operation, const QNetworkRequest& request, QIODevice* ioDevice)
{
view->page()->setNetworkAccessManager(this);
QNetworkReply* response = NULL;
if (request.url().path().endsWith("ajax"))
{
response = QNetworkAccessManager::createRequest(operation, request, ioDevice);
response->write("{ success: true }");
}
else
{
response = QNetworkAccessManager::createRequest(operation, request, ioDevice);
}
return response;
}
正如你可以看到上面我已經覆蓋了QNAM的createRequest方法來接收所有的頁面請求,並用JSON對象如果URL與阿賈克斯擴展名結尾迴應。但是我發現很難將數據寫回網絡流。
有關如何解決這個問題的任何提示或提示?
乾杯, 本
更新:
嗨阿濟斯, 我已經嘗試您的解決方案但它未能將信號連接到插槽。
QNetworkAccessManager* nam = view->page()->networkAccessManager();
bool status = QObject::connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyReceived(QNetworkReply*)));
if(!status)
{
QErrorMessage errorMessage;
errorMessage.showMessage("connect failed");
errorMessage.exec();
}
錯誤:
對象::連接:沒有這樣的插槽ngcBrowser :: replyRecieved(QNetworkReply *)
更新:
好,我設法他的工作,但是當我嘗試寫入IODevice是失敗,指示其只讀設備。
感謝您的幫助。
所以,如果一個網址與阿賈克斯結束,你只是想送JSON作爲答覆,沒有別的?或者你想追加你的JSON到http響應? – Abhijith 2011-05-19 15:52:25
我希望將JSON附加到http響應中。感謝您的時間。 – Corvusoft 2011-05-19 15:58:13