首页 > 解决方案 > 与桌面应用程序和 WebAssembly 应用程序不同的行为

问题描述

我的应用程序是使用 Qt WebAssembly 框架版本 5.15.1 开发的前端客户端。如果我运行在 mingw 64 位或 webassembly 上编译的应用程序,我会有不同的行为。

我想从服务器获取一个 xml 文件,我通过 RESTful api 询问这个文件。

当我以桌面模式 [1](使用 mingw 64 编译)运行我的应用程序时,收到的有效负载(我使用QNetworkReply::readAll)是正确的。我没有问题地阅读了xml。

当我在 Chrome 中以 web 模式 [2](使用 webassembly 编译)运行我的应用程序时,我的程序出现故障,因为使用 QNetworkReply::readAll 读取的 QNetworkReply(与 QNetworkAccessManager 相关联)有效负载返回 qt 主页“qt.io”。

我在配置 QNetworkRequest 实例所需的 QUrl 实例中设置了架构、主机、端口。我试图在我的 QNetworkAccessManager istance 中设置主机和端口。

该请求由QNetworkAccessManager::get执行 。beetwen [1] 和 [2] 的唯一区别是编译过程。我对模式、主机、端口和请求使用相同的值。有人可以帮我理解这种行为吗?

这是我的代码的一部分:


m_TgtUrl.setScheme(newSchema);
m_TgtUrl.setHost(newHost);
m_TgtUrl.setPort(newPort);
m_TgtUrl.setPath(newPath);

QUrlQuery query;
query.addQueryItem("filename", xmlFilename);

m_TgtUrl.setQuery(query);

QNetworkRequest request;
request.setUrl(m_TgtUrl);

QNetworkAccessManager m_NAM;
QNetworkReply *m_MyReply = m_NAM.get(request);

connect(m_MyReply, &QNetworkReply::finished, this, [this]() {
        QByteArray BA(m_MyReply->readAll());
        qDebug << BA;
    });

标签: qt5webassemblyqnetworkaccessmanagerqnetworkreplyqnetworkrequest

解决方案


推荐阅读