问题标签 [qnetworkreply]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1077 浏览

qt - 如何避免 QNetworkAccessManager 多个 POST 请求?

我已经为我的应用程序实现了发布请求,如下所示:

和信号/槽初始化

在服务器上,有一个错误会创建错误的 HTML,但操作本身会正确执行(如果调用一次)。由于 POST 响应中的 HTML 错误,QNetworkAccessManager 会多次重试其 POST 请求(通常在 Wireshark 中可以看到 3 或 4 次)。在 Qt 中,replyFinished 仅在 Wireshark 中的最后一次 POST 之后立即到达一次。NetworkReply 包含“连接已关闭”错误。

这里的问题是,当发布的动作连续执行几次时,它会在服务器上做坏事。由于我没有服务器端的访问权限,我正在寻找一个客户端的解决方案,它只会调用一次 POST 方法。是否可以在 QNetworkAccessManager 中设置任何仅允许单个 POST 尝试的参数?或者 Qt 中有没有可以替代的替代品?

0 投票
1 回答
707 浏览

c++ - QNetworkAccessManager 在获取时崩溃

QNetworkAccessManager 工作得很好,然后每次在 get() 方法上都开始崩溃,这非常简单:

堆栈如下:

PS 现在有时会在这一行开始崩溃:

其他团队成员当然可以从其他 PC 和其他地方运行此代码而不会出现问题。可能是什么原因?!网络问题,防病毒软件,防火墙(试图关闭两者都没有运气)等?!为什么它调用 QNetworkProxy::setPassword?!我没有代理,试图NoProxy明确设置也没有运气。问题可能是什么?有任何想法吗?

0 投票
2 回答
2543 浏览

c++ - QNetworkReply 错误:网络访问被禁用

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

网络访问被禁用。

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

代码:

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

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

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

0 投票
1 回答
942 浏览

c++ - 如何从一个 QNetworkAccessManager 发送回复?

Qt 文档说QNetworkAccessManager每个应用程序使用一个:

一个 QNetworkAccessManager 对于整个 Qt 应用程序应该足够了。

但是,我访问多个 Web 服务,并且需要调用单独的函数来解析其中的每一个:

由于我只有一个 QNetworkAccessManager::finished(QNetworkReply * reply)信号,将回复发送到其单独的解析功能的最佳方式是什么?

创建请求时,我可以连接到finished每个对象的信号:QNetworkReply

但它是连接到只使用一次的信号的最佳方式(性能)吗?有没有更好的方法?


相关自己的问题:

  1. 在 Qt 应用程序中共享 cookie 的最佳方式
  2. “停止/关闭” QNetworkAccessManager 的正确方法是什么?
  3. QNetworkAccessManager 可以从不同的线程获取/发布吗?
0 投票
1 回答
2048 浏览

qt - 连接丢失时未检测到 QNetworkReply 错误信号

我正在使用 Qt5.5 从远程服务器下载文件,一切正常,但我无法检测到 QNetworkReply 何时返回错误。实际上,我正在尝试检查用户是否正在下载文件并且突然失去 Internet 连接(因为为什么不 :-))。为此,我开始下载并在几秒钟后拔下以太网电缆。

在这种情况下是否发出信号QNetworkReply::error(QNetworkReply::NetworkError)?如果是,为什么我没有在下面的代码中输入我的插槽?

我还像这样连接了访问管理器:

当 Internet 连接没有中断时,我将进入 slot requestFinished(),但如果不再有 Internet,我将不会进入任何 slot。

难道我做错了什么?

0 投票
1 回答
175 浏览

qt - Qt 网络请求的条件变量

我有一个应用程序,我在其中使用 Qt 的 QNetwork* 类进行一些“类似同步”的调用。从网上各种来源改编的代码看起来像:

我知道这是一个hack,所以我实现了这个。我开始想知道是否可以改用 C++ 的条件变量来实现类似的效果。我尝试这样做的代码如下所示:

这是我第一次尝试条件变量,所以我不完全确定我是否正确使用它们(_requestCV当然在这个例子中是条件变量)。但真正让我困惑的是 QNetworkReply::finished lambda 永远不会执行。在第一个示例中,finished() 事件似乎几乎立即触发,并且 QNetworkReply 具有我所期望的一切。为什么在第二个示例中从未调用 pReply 的 finished() 事件?

注意:我知道很多人对同步网络调用有强烈的感觉,尤其是 Qt 的模型显然是为异步使用而设计的。但是,这不是我有兴趣讨论这个问题的内容。谢谢你。

0 投票
3 回答
322 浏览

c++ - QNetworkAccessManager 内存问题

我正在开发一个应用程序,它使用 QtNetworkAccessManager 向服务器发送请求并存储回复。我已经让它工作了,但是内存使用量不断增加,直到它阻塞了整个 PC。我认为这个问题与调用 deletelater() 和事件循环有关,但我不知道如何解决它。这是代码:

主文件

以太网.h

以太网.cpp

我将不胜感激任何建议。谢谢!

0 投票
1 回答
982 浏览

c++ - QNetworkAccessManager 不起作用

我有以下代码:

我想向谷歌服务器发送查询并获得响应,但是当我发送请求时,上述插槽都没有调用,那我做错了什么?如果我把那个地址放在我的浏览器中,我会得到一些数据。

0 投票
1 回答
285 浏览

c++ - 使用 QNetworkAccessManager 检测网络摄像机连接?

我正在为我的应用程序使用 Axis Communications 的两个 ip 摄像机。我想检查相机是否曾经断开连接。QNetworkAccessManager是否可以通过使用and来做到这一点QNetworkReply

我尝试的原型如下:

但是该插槽cameraDisconnected似乎从未被调用。我还尝试连接finished()来自QNetworkReply以下的信号:

但即便如此,插槽也永远不会被调用。

我究竟做错了什么?

谢谢。

0 投票
1 回答
181 浏览

c++ - 如何接收 QNAM 开始在 Qt 中下载网页的信号?

我的爬虫使用 Qt 5.7、C++。我已经根据
NetworkTimeouts实现细节 (cpp)创建了超时管理。

我知道QNetworkAccessManager(QNAM)对 URL 使用内部队列。如何检测真正的下载开始,而不仅仅是将 URL 放入隐藏队列?我QNetworkAccessManager::get()循环调用(我不等待 replyFinished() 信号来推送另一个 URL)。我需要在真正下载的那一刻启动计时器。在 Windows 中,我们最多有 6 个并行请求,其他请求正在等待。