问题标签 [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 回答
621 浏览

c++ - QNetworkAccessManager 一个实例和连接槽

我有我的第一个 Qt 应用程序正在开发中。它是用于站点消息传递的桌面客户端。

Qt 文档说我只需要一个跨应用程序的QNetworkAccessManager实例。但我也读到在 Qt 中使用单例并不是一个好主意。我如何在应用程序中创建一个QNetworkAccessManager实例?

另一个问题是当我从其他类调用ApiHandler函数时如何正确连接插槽?

例如,我有使用ApiHandler功能的ExampleApi类,在updateMessageList插槽中,messageListUpdated应该在请求完成后连接以更新视图中的消息列表,但它从未调用过

ExampleApi.h

ExampleApi.cpp

ApiHandler.h

ApiHandler.cpp

0 投票
1 回答
55 浏览

qt - 使用 qt 检查虚拟服务器(vps)连接时遇到问题

我想在程序中输入虚拟服务器(vps)的ip、用户名和密码,程序检查用户名和密码是否正确。

我使用了以下代码

输出:

请指导我

0 投票
1 回答
445 浏览

qt - QNetworkAcessManager 在不同计算机上的发布模式下不起作用

我有一个非常奇怪的问题我创建了一个使用 QNetworkAcessManager 下载 HTML 页面并从此页面获取数据的应用程序我发布了我的应用程序以在同一无线连接上的第二台笔记本电脑上使用它,但它不起作用。
在我的计算机上,在发布应用程序并使用 windeploy.exe 获取此版本 exe 的所有 dll 文件后,我尝试在具有 QT 并在其上开发的计算机上使用它,它工作正常并获取文件中的数据。
当我在另一台计算机上使用它时,问题就来了按钮中的代码以获取数据

准备阅读

完成函数我得到QByteArray类型的数据并用它来从中获取数据函数很长
我遇到这个问题大约两个月但我很着急所以我使用libcurl和QProcess来获取这个HTML页面数据但是我现在我想知道导致此问题
更新
的原因 我使用 main.cpp 中的代码来获取文件中的所有 Qt 警告和错误,正如 Macias 的评论中提到的那样,我将它放入我使用的文件中附加到文件中所以我可以得到它带来的所有错误,如果有人可以检查这些警告并查看它是否导致问题,我会从 QSslSocket 收到一些警告,因为我不知道

错误文件

但是在工作计算机中我收到了这个警告




当我在文件夹可执行文件中添加新的 dll 文件时 更新它给了我这个警告


将回复连接到错误信号

插槽在这里


这是我在连接错误信号和属性后得到的


当我将三个 dll 文件添加到我的计算机上的发布文件夹时,我在没有它们的情况下工作的应用程序 当我转到 C:\AppServ\Apache24\bin 的路径并复制这个 dll(libeay32.dll 和 ssleay32 .dll)从这个文件夹而不是我从dll网站下载的其他文件夹,它终于可以工作了,但是appchace文件夹和从网站下载的有什么区别?在此处输入图像描述


提前致谢

0 投票
2 回答
55 浏览

c++ - Qt 5.6 中错误的下载文件大小

我使用了这样的 DownloadManager 类,但问题是对于大文件,我的大小错误为 65536KB 而不是 51328022 字节。saveDisk 方法有问题。

ps:我使用的是 Qt 5.6 因为我需要在 Windows Vista 和 XP 上运行该应用程序

0 投票
0 回答
317 浏览

qt - URL 在 Web 浏览器中打开正常,但使用 QNetworkAccessManager 打开时出错

我正在尝试使用 Qt 访问以下 URL:“ https://www.cyclestreets.net/api/journey.json?itinerarypoints=13.417365,52.513381%7C13.438596,52.519854&key=cdccf13997d59e70&plan=balanced&reporterrors=1&speed=20 ”。如果我在网络浏览器中点击它,它确实会给出一些响应(请自行尝试)。QNetworkReply::NetworkError(UnknownNetworkError)但是,当我尝试使用以下代码进行相同操作时收到错误消息:

知道这怎么可能发生?完全相同的 URL 怎么可能在 Web 浏览器中给出有效响应,但在 Qt 中给出网络错误?任何类型的帮助将不胜感激。

0 投票
0 回答
273 浏览

c++ - 如何翻译 QNetworkReply 错误?

我正在使用 QNetworkReply::NetworkError ,我可以使用它的名称来获取字符串错误

Qt 中是否有一些可能性可以在没有任何硬代码字典的情况下将该字符串翻译成西班牙语?

0 投票
1 回答
270 浏览

c++ - QNetworkReply 返回不完整的 XML 数据

我正在向远程服务器发送 HTTP GET 请求。使用各种参数,我定义了我感兴趣的内容。特别是我确保它output=xml在查询中,因为它使服务器以 XML 形式返回回复。

我的班级HttpRetriever和各自的QNetworkReply和之间有以下联系QNetworkAccessManagerQNetworkRequest参见slotStartRequest()):

这里感兴趣的插槽具有以下声明:

slotFinishRequest():

slotReadyReadRequest():

在里面slotFinishRequest()我叫processReply()

我通过以下插槽触发 HTTP 获取请求:

正如您所看到的,到目前为止,我已经为我的班级和服务器之间的网络通信奠定了基础,我还没有开始着手解析 XML 回复并从中提取我需要的信息。

问题是我得到(非常,非常经常)要么

解析 XML 数据时遇到错误:需要开始标记。

或者

解析 XML 数据时遇到错误:文档过早结束

在我的processReply()功能中。每次我收到大量回复(几百到几千行)时都会发生这种情况。当我得到一个小的(30-40 行给予或接受)时,它永远不会发生。

因此,问题显然出在我收到的数据量、它被组合在一起的方式QNetworkAccessManager(或所有这些缓冲接收到的数据块的任何 Qt 组件)和/或我设置实例的方式上我班上与网络相关的组件。我还必须在这里做一个重要的说明,即在我的浏览器(带有HttpRequester附加组件的最新 Firefox)中,无论它有多大,我总是会收到完整的 XML。所以这似乎是我的应用程序独有的问题,与我系统上的网络设置无关。

0 投票
1 回答
1619 浏览

c++ - Qt 使用 QNetworkReply 获取外部 IP 地址

再会

介绍:

我的应用程序需要获取外部 IP 地址并将其与内部获取的地址匹配,从而允许应用程序继续进行。

为此,我为此使用了QNetworkAccessManagerQNetworkReply

我的代码是使用示例作为参考构建的。

我试过的:

获取外部 IP 可以通过从ipify API获取 JSon 对象来完成。

我通过以下方式证实了这一点:

curl "https://api.ipify.org?format=json"

它反过来以我当前的 IP 地址响应格式:

{"ip":"255.255.255.255"}

这是一个 JSONObject。使用它,我创建了下面的代码。

问题:

问题很简单,我没有反应。post请求被执行,但根本没有触发响应(或)finished信号。

  • POST->GET请求

我已经更改了get请求的代码,因为这解决了这个线程上的无响应问题。

我通过在 URL 中使用查询参数指定整个 url 来做到这一点:

包括标题内容类型和大小(如下例所示,最后调用QNetworkAccessManager::get()with:

但这也没有回应。

我认为这是我想念的小东西,但我根本看不到它。

建议?


查询外网IP代码:

0 投票
1 回答
220 浏览

c++ - QNetworkReply 在发出完成信号时抛出 SIGSEGV

我的应用程序使用QNetworkReply's 从 RESTful API 发送和接收数据。

有许多教程可用于将QNetworkReplyQNetworkAccessManager一起使用

一旦我使用的这样的例子可以在这里或什至在这里找到

基本用法:

// 标题

// 发出请求

// 处理请求

使用类似的实现,我每 X 秒请求一次数据。

问题:

收到finished()信号时,会触发处理回复的代码,但在读取数据时,我得到一个SIGSEGV.

这个问题似乎是随机发生的,因此我无法确定是什么触发了它。

任何建议都会很乐意接受。

0 投票
1 回答
510 浏览

windows-10 - 如何制作自己的自定义 QNetworkReply?

我一直在尝试创建自己的自定义 QNetworkReply 类,该类从回复中返回自定义字节。我确实从我也重载的 QNetworkAccessManager::createRequest() 重载中返回了该类。我的问题是,我的函数重载都没有被调用,因此 QWebView 的请求失败,因为回复是“损坏的”。我试图从 Qt 测试库中获得一些灵感,FakeReply但我没有让我的工作。

这是我的代码:

和 .cpp 文件:

该类的使用方式如下: