Я пытаюсь перехватить запрос страницы / формы в Qt 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-адрес заканчивается расширением .ajax. Однако мне трудно записывать данные обратно в сетевой поток.
Любые советы или подсказки, как это сделать?
Ура,
Бен
Обновление:
Привет, Абхиджит,
Я попробовал ваше решение, однако оно не может подключить сигнал к слоту.
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();
}
Ошибка:
Object :: connect: такого слота нет ngcBrowser :: replyReceve (QNetworkReply *)
Update :
Хорошо, мне удалось заставить его работать, однако, когда я пытаюсь записать в IODevice, происходит сбой, указывающий на его устройство ReadOnly.
Спасибо за помощь.