问题标签 [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.
qt - 如何避免 QNetworkAccessManager 多个 POST 请求?
我已经为我的应用程序实现了发布请求,如下所示:
和信号/槽初始化
在服务器上,有一个错误会创建错误的 HTML,但操作本身会正确执行(如果调用一次)。由于 POST 响应中的 HTML 错误,QNetworkAccessManager 会多次重试其 POST 请求(通常在 Wireshark 中可以看到 3 或 4 次)。在 Qt 中,replyFinished 仅在 Wireshark 中的最后一次 POST 之后立即到达一次。NetworkReply 包含“连接已关闭”错误。
这里的问题是,当发布的动作连续执行几次时,它会在服务器上做坏事。由于我没有服务器端的访问权限,我正在寻找一个客户端的解决方案,它只会调用一次 POST 方法。是否可以在 QNetworkAccessManager 中设置任何仅允许单个 POST 尝试的参数?或者 Qt 中有没有可以替代的替代品?
c++ - QNetworkAccessManager 在获取时崩溃
QNetworkAccessManager 工作得很好,然后每次在 get() 方法上都开始崩溃,这非常简单:
堆栈如下:
PS 现在有时会在这一行开始崩溃:
其他团队成员当然可以从其他 PC 和其他地方运行此代码而不会出现问题。可能是什么原因?!网络问题,防病毒软件,防火墙(试图关闭两者都没有运气)等?!为什么它调用 QNetworkProxy::setPassword?!我没有代理,试图NoProxy
明确设置也没有运气。问题可能是什么?有任何想法吗?
c++ - QNetworkReply 错误:网络访问被禁用
我正在使用 QNetworkRequest/QNetworkReply 下载文件。在成千上万人使用的旧程序版本上,它可以完美运行(VS 2010 编译器)。升级到 Visual Studio 2015 并使用 XP 目标重新编译整个项目(与 OpenSSL 相同的过程)后,一些用户在启动下载时开始收到错误:
网络访问被禁用。
错误记录在连接到来自 QNetworkReply::NetworkError 的 error() 信号的插槽中。
代码:
我设法在其中一台受影响的机器上安装了 Wireshark,但没有向 Internet 发出请求,因此它从一开始就失败了。到目前为止,我无法找出导致这些机器出现问题的原因。操作系统版本无关紧要,尝试禁用 AV/防火墙等。我也无法找到返回的错误字符串的任何详细信息。
该代码适用于 90% 的人,并已从 XP SP3 到 Windows 10 进行了测试。
可能是什么问题,我该如何调试呢?
c++ - 如何从一个 QNetworkAccessManager 发送回复?
Qt 文档说QNetworkAccessManager
每个应用程序使用一个:
一个 QNetworkAccessManager 对于整个 Qt 应用程序应该足够了。
但是,我访问多个 Web 服务,并且需要调用单独的函数来解析其中的每一个:
由于我只有一个 QNetworkAccessManager::finished(QNetworkReply * reply)
信号,将回复发送到其单独的解析功能的最佳方式是什么?
创建请求时,我可以连接到finished
每个对象的信号:QNetworkReply
但它是连接到只使用一次的信号的最佳方式(性能)吗?有没有更好的方法?
相关自己的问题:
qt - 连接丢失时未检测到 QNetworkReply 错误信号
我正在使用 Qt5.5 从远程服务器下载文件,一切正常,但我无法检测到 QNetworkReply 何时返回错误。实际上,我正在尝试检查用户是否正在下载文件并且突然失去 Internet 连接(因为为什么不 :-))。为此,我开始下载并在几秒钟后拔下以太网电缆。
在这种情况下是否发出信号QNetworkReply::error(QNetworkReply::NetworkError)
?如果是,为什么我没有在下面的代码中输入我的插槽?
我还像这样连接了访问管理器:
当 Internet 连接没有中断时,我将进入 slot requestFinished(),但如果不再有 Internet,我将不会进入任何 slot。
难道我做错了什么?
qt - Qt 网络请求的条件变量
我有一个应用程序,我在其中使用 Qt 的 QNetwork* 类进行一些“类似同步”的调用。从网上各种来源改编的代码看起来像:
我知道这是一个hack,所以我实现了这个。我开始想知道是否可以改用 C++ 的条件变量来实现类似的效果。我尝试这样做的代码如下所示:
这是我第一次尝试条件变量,所以我不完全确定我是否正确使用它们(_requestCV
当然在这个例子中是条件变量)。但真正让我困惑的是 QNetworkReply::finished lambda 永远不会执行。在第一个示例中,finished() 事件似乎几乎立即触发,并且 QNetworkReply 具有我所期望的一切。为什么在第二个示例中从未调用 pReply 的 finished() 事件?
注意:我知道很多人对同步网络调用有强烈的感觉,尤其是 Qt 的模型显然是为异步使用而设计的。但是,这不是我有兴趣讨论这个问题的内容。谢谢你。
c++ - QNetworkAccessManager 内存问题
我正在开发一个应用程序,它使用 QtNetworkAccessManager 向服务器发送请求并存储回复。我已经让它工作了,但是内存使用量不断增加,直到它阻塞了整个 PC。我认为这个问题与调用 deletelater() 和事件循环有关,但我不知道如何解决它。这是代码:
主文件
以太网.h
以太网.cpp
我将不胜感激任何建议。谢谢!
c++ - QNetworkAccessManager 不起作用
我有以下代码:
我想向谷歌服务器发送查询并获得响应,但是当我发送请求时,上述插槽都没有调用,那我做错了什么?如果我把那个地址放在我的浏览器中,我会得到一些数据。
c++ - 使用 QNetworkAccessManager 检测网络摄像机连接?
我正在为我的应用程序使用 Axis Communications 的两个 ip 摄像机。我想检查相机是否曾经断开连接。QNetworkAccessManager
是否可以通过使用and来做到这一点QNetworkReply
?
我尝试的原型如下:
但是该插槽cameraDisconnected
似乎从未被调用。我还尝试连接finished()
来自QNetworkReply
以下的信号:
但即便如此,插槽也永远不会被调用。
我究竟做错了什么?
谢谢。
c++ - 如何接收 QNAM 开始在 Qt 中下载网页的信号?
我的爬虫使用 Qt 5.7、C++。我已经根据
NetworkTimeouts
类、实现细节 (cpp)创建了超时管理。
我知道QNetworkAccessManager
(QNAM)对 URL 使用内部队列。如何检测真正的下载开始,而不仅仅是将 URL 放入隐藏队列?我QNetworkAccessManager::get()
循环调用(我不等待 replyFinished() 信号来推送另一个 URL)。我需要在真正下载的那一刻启动计时器。在 Windows 中,我们最多有 6 个并行请求,其他请求正在等待。