2

我正在使用 QNetworkRequest/QNetworkReply 下载文件。在成千上万人使用的旧程序版本上,它可以完美运行(VS 2010 编译器)。升级到 Visual Studio 2015 并使用 XP 目标重新编译整个项目(与 OpenSSL 相同的过程)后,一些用户在启动下载时开始收到错误:

网络访问被禁用。

错误记录在连接到来自 QNetworkReply::NetworkError 的 error() 信号的插槽中。

代码:

QNetworkReply reply = nam.get(QNetworkRequest(url));
emit sendInfo("Starting download");
QObject::connect(reply, SIGNAL(finished()), this, SLOT(finishedSlot()));
QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(errorSlot(QNetworkReply::NetworkError)));
QObject::connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(progressSlot(qint64, qint64)));

我设法在其中一台受影响的机器上安装了 Wireshark,但没有向 Internet 发出请求,因此它从一开始就失败了。到目前为止,我无法找出导致这些机器出现问题的原因。操作系统版本无关紧要,尝试禁用 AV/防火墙等。我也无法找到返回的错误字符串的任何详细信息。

该代码适用于 90% 的人,并已从 XP SP3 到 Windows 10 进行了测试。

可能是什么问题,我该如何调试呢?

4

2 回答 2

0

显然是 Qt 5.5.1 https://github.com/owncloud/client/issues/3600中的一个错误,尽管我不能 100% 肯定地确认这一点。

于 2016-02-16T15:06:01.317 回答
0

我遇到了同样的问题。看了官方资料后QNetworkAccessManager,找到了解决办法。初始化后QNetworkAccessManager,添加以下代码:

net_mgr->setNetworkAccessible(QNetworkAccessManager::Accessible);
于 2021-12-21T05:41:01.580 回答