c++ - 使用 Ajax 请求从 QWebView 读取本地文件

标签 c++ ajax file qt qwebview

我正在开发一个封装了 HTML5/JQuery 网络应用程序的 Qt/C++ 程序。

我曾经发出 Ajax 请求以从服务器读取文件。但是现在,我希望 Qt 从本地磁盘读取文件并将其内容发送到我的 Web 应用程序。

我想我需要 Qt 来捕获来自 Web 应用程序的 Ajax 请求并将文件内容作为 Ajax 请求结果返回。

问题是我不知道该怎么做。目前,我还没有在谷歌上找到任何相关信息。

欢迎任何帮助!

最佳答案

我终于找到方法了。我覆盖了 QNetworkAccessManager

MyQNetworkAccessManager.h:

class MyQNetworkAccessManager : public QNetworkAccessManager
{
    Q_OBJECT

protected:
    virtual QNetworkReply * createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0);
};

MyQNetworkAccessManager.cpp:

QNetworkReply * MyQNetworkAccessManager::createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData) {
    QUrl url = req.url();
    QString path = url.path();

    if (op == QNetworkAccessManager::GetOperation && path.endsWith("xml")) {
        QUrl newUrl;

        if(path.endsWith("..")) {
            newUrl.setUrl("...");
        }
        else if(path.endsWith("...")) {
            newUrl.setUrl("...");
        }
        else {
            newUrl = url;
        }
        return QNetworkAccessManager::createRequest(QNetworkAccessManager::GetOperation, QNetworkRequest(newUrl));
    }
    else
    {
        return QNetworkAccessManager::createRequest(op, req, outgoingData);
    }
}

主窗口.cpp:

// ....

QWebView *qWebView = new QWebView();

QWebPage *page = qWebView->page();
MyQNetworkAccessManager *networkManager = new MyQNetworkAccessManager();
page->setNetworkAccessManager(networkManager);

qWebView->setPage(page);

qWebView->load(QUrl("..."));

// ....

关于c++ - 使用 Ajax 请求从 QWebView 读取本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280531/

相关文章:

c++ - 定义多个名称相同但类型不同的函数对 C++ 编译器的性能有何影响?

javascript - Jquery序列化: trying to pass a form status to an ASP. NET MVC Controller 而不提交表单

javascript - 使用 AJAX 或类似技术来缩小现有列表的范围

javascript - 将查询与每个 php echo 连接起来

file - 一个人应该如何从 laravel Swagger ?

c++ - Mongodb C++ 驱动程序 - 链接错误:使用已弃用的 boost::stystem::get_generic_category()

c++ - 意外的 undefined reference

c++ - 为什么我的 C++ 代码中会出现断点?

php - Laravel 文件不存在 - 文件上传

java - 为什么从我的文件中读取的最小数字总是 0? ( java )