QNetworkAccessManager 发送 GET 两次

2024-01-08

我有一些类可以干扰 HTTP 服务器。 这是有意义的代码部分:

const QString someClass::BASEURL = QString("http://127.0.0.1:8000/?");

someClass::someClass():
    manager(new QNetworkAccessManager(this))
{
}

QNetworkReply *someClass::run(QString request)
{
    qDebug() << request;
    QEventLoop loop;
    QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
    QNetworkReply *res = manager->get(QNetworkRequest(QUrl(BASEURL + request)));
    loop.exec();
    return res;
}

当我调用方法 run() 时,有时(不是每次)有两个相同的 GET 请求 (我用 tcpdump 查看)。 qDebug() 执行 1 次。
我的代码有错误吗?我看不到任何可能的解释。

更新: 经过一些 tcpdump 输出研究。
在第二个请求之后,它发送带有 RST 标志的数据包作为对 FIN 的答复。 但我仍然看不出触发问题和不触发问题的 TCP 流有什么区别。
F.e.这是wireshark的输出。Stream 8 http://pastebin.com/HchVTcC8顺利。直播11 http://pastebin.com/T1WyJV5K被复制为直播12 http://pastebin.com/VSsq3AXF.
我被这个问题困住了。也许这是服务器大小的一些协议错误,我不确定。或者可能是 QNetworkAccessManager 中的错误。


您是否尝试过重写代码以使其更加异步,而无需在本地范围内使用 QEventLoop?您的代码对我来说看起来不错,但是您在对请求进行排队以在本地范围内处理和使用 QEventLoop 的方式中可能会遇到一些奇怪的 QT 错误。我通常按​​以下方式使用 QNetworkAccessManager 发送 GET 和 POST 请求:

   void someClass::run(QString request)
   {
     qDebug() << request;
     QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), this,  SLOT(on_request_complete(QNetworkReply*)));
     QNetworkReply *res = manager->get(QNetworkRequest(QUrl(BASEURL + request)));
   }

   void someClass::on_request_complete(QNetworkReply* response)
   {
      // Do stuff with your response here
   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QNetworkAccessManager 发送 GET 两次 的相关文章

  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 使用套接字和 AsyncTask 强制关闭

    堆栈的人们大家好 请参阅下面我的班级代码和我的 LogCat 尝试连接时我受到强力关闭 如果有人能帮助我找出原因 我将不胜感激 基本上代码的作用是 从意图中获取 IP 地址 连接到端口 32 的 IP 然后发送一个命令 等待响应并发送另一个
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu
  • 使 QLabel 的像素图透明

    我有一个带有 QLabel 和像素图的主窗口 我想让它透明 或不那么不透明 我正在使用下面的代码 ui gt label gt setAttribute Qt WA TranslucentBackground ui gt label gt
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • CMake AUTOMOC,文件位于不同文件夹中

    我有一个简单的 CMake 项目 proj project folder a h a cpp CMakeLists txt CMakeLists txt cmake minimum required VERSION 3 2 set CMAK
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • 使用 QWT 构建时出错

    我收到一个错误 undefined reference to QwtPlot QwtPlot QWidget 当我尝试构建我的项目时 即使设置中一切看起来都很好 在我的 CmakeLists txt 中我有 include director
  • QT:模块“QtWebView”未安装

    我的操作系统是win10 QT版本是Qt5 7 mingw53 32 目标操作系统是win10 当我使用qmlscene执行qml文件时 发生了一些错误 qrc qml 3 模块 QtWebView 未安装 我的 qml 文件如下 impo
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • PyQt5 使动态小部件可点击并将参数传递给另一个函数

    我正在尝试制作动态小部件并使它们可点击 通过单击一个小部件 它应该将动态值传递给其他小部件 我尝试过 sender 和其他访问小部件的选项 但没有任何效果 所有小部件都从最后一个小部件发送信息 下面是代码 import sys from P

随机推荐

  • 如何更改 base64 格式的 svg img 的颜色?

    我有一个 Svg img 其中包含base64格式并尝试更改其颜色 有人知道如何执行此操作吗 我发现了一些关于
  • 是否可以将列表类型转换为生成器而不进行迭代?

    我知道可以将生成器转换为 低级 列表 例如list i for i in xrange 10 但是是否可以做相反的事情without首先迭代列表 例如 i for i in range 10 Edit 删除了这个词cast为了清楚地说明我想
  • 程序化组件上的 Vue 反应式 props

    给定一个组件 Vue component my comp props input watch input function 以下的编程方法是什么
  • 在swift4中解析Json

    你好 我尝试解码 Json 结果 ID 80 时间 09 00 00 地位 status 0 kirpeja id 74 name Natalja image natalija255 png duration 00 20 00 status
  • 当我在 php 中尝试 Solr 时出现问题

    我在 PHP 中运行示例时遇到问题 代码如下
  • 永久删除 Beaglebone Black 服务

    如何从 BeagleBone Black Debian wheezy 发行版中永久删除 cloud9 bonescript gateone 等 我可以使用以下命令禁用它们 systemctl disable cloud9 service s
  • 按预期顺序运行依赖和独立测试方法

    我想按顺序执行测试方法 我在 testng xml 中使用了类 并将保留顺序设置为 true
  • 等待两个 Observable 完成

    我想在两个 Observables 返回值后调用一个方法 我做了一些搜索 看起来像forkJoin是我想要的 但我无法让它发挥作用 我知道这两个 Observables 都返回值 因为我在组件中的其他地方单独使用每个 Observables
  • 使用 id 访问 div,无需 getElementById 和 jQuery [重复]

    这个问题在这里已经有答案了 我相信 JS 中访问具有 id 的元素的标准方法是使用 getElementById 如果人们喜欢使用 jQuery 那么他们可能会使用他们的选择器 但最近我遇到了一个非常简单的代码示例 如下所示 HTML di
  • JQuery 自动完成:如何处理修改?

    我有自动完成功能 但如何处理修改 当用户修改原始选择时会发生什么 我有一个自动完成功能 当选择列表时 会填写其他字段 如果用户选择列表 然后尝试将其修改为新的内容 与我们数据库中的任何内容都不匹配 则其他字段需要清除 另一种提问方式 我如何
  • C# PCL 从文件读取

    因此 我正在编写一个面向 NET 4 5 Windows 8 和 Windows Phone 8 的可移植类库 我正在尝试从作为构建内容的项目一部分的文本文件中进行读取 我看到 StreamReader 在 PCL 中可用 但在给定文件路径
  • 如何使用 Linux 命令找到我的 shell 版本?

    我想了解使用 Linux 命令的 shell 版本 我尝试了以下命令 但它显示了我所在的 shell 的类型 Command echo SHELL Result bin bash 这将做到这一点 SHELL version 就我而言 输出是
  • 我可以使用 CSS 更改 svg 路径的填充颜色吗?

    我有以下代码 span span
  • 在 macOS 应用程序中以编程方式创建和定位 NSButton? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何以编程方式在 macOS Coc
  • 为什么 requestHeaders 未定义?

    我正在制作一个记录请求标头的 Chrome 扩展 在我的background js文件中我有这个代码 chrome webRequest onSendHeaders addListener function res res requestH
  • 反应选择下拉菜单在模式内打开

    我有一个自定义模式 里面有 2 个反应选择组件 模态主体已准备好自动滚动 以防内容超出其大小 但反应选择组件下拉列表会在模态内部打开并出现溢出 这正是我不想要的 没有溢出 它工作正常 我正在使用 CSS 模块 div this props
  • 更新序列中的多个值

    要获得更新了一个值的序列 可以使用 seq updated index value 我想为一系列元素设置一个新值 有这个库函数吗 我目前使用以下功能 def updatedSlice A seq List A ind Iterable In
  • 如何在C#中访问JS变量

    假设我有 div 500 div 上下文 asp net aspx 页面 如何允许 C 代码访问该值 我正在考虑一些类似于 jQuery 的事情 有没有更好的办法 使用隐藏的输入框
  • 为什么 Weak::new() 不起作用,而 Rc::downgrade() 起作用?

    我正在创建一个返回一个的函数Weak对特征对象的引用 在找不到对象的情况下 它是一个查找函数 我想返回一个空的Weak参考使用Weak new use std rc self Rc Weak use std cell RefCell pub
  • QNetworkAccessManager 发送 GET 两次

    我有一些类可以干扰 HTTP 服务器 这是有意义的代码部分 const QString someClass BASEURL QString http 127 0 0 1 8000 someClass someClass manager ne