我的应用程序是使用 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;
});