问题标签 [qnetworkrequest]
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 - Qt 网络请求的条件变量
我有一个应用程序,我在其中使用 Qt 的 QNetwork* 类进行一些“类似同步”的调用。从网上各种来源改编的代码看起来像:
我知道这是一个hack,所以我实现了这个。我开始想知道是否可以改用 C++ 的条件变量来实现类似的效果。我尝试这样做的代码如下所示:
这是我第一次尝试条件变量,所以我不完全确定我是否正确使用它们(_requestCV
当然在这个例子中是条件变量)。但真正让我困惑的是 QNetworkReply::finished lambda 永远不会执行。在第一个示例中,finished() 事件似乎几乎立即触发,并且 QNetworkReply 具有我所期望的一切。为什么在第二个示例中从未调用 pReply 的 finished() 事件?
注意:我知道很多人对同步网络调用有强烈的感觉,尤其是 Qt 的模型显然是为异步使用而设计的。但是,这不是我有兴趣讨论这个问题的内容。谢谢你。
json - QNetworkRequest 中的空格而不是符号“+”
我尝试用 Qt 制作一个 JSON 对象。我有一个浮动值:1.49329e+22
当我将其添加到 JSON 时:
在服务器上,我得到:
那个空格是什么?由于那个空格,我得到一个无效的 JSON。怎么了?
补充:
我意识到问题不在于 JSON 对象,而在于如何QNetworkRequest
将数据发送到服务器。当某些字符串包含符号“+”时,它不会显示在服务器上。但是,如果我尝试从其他服务(例如 python 的请求)发送到同一台服务器,则会成功显示符号“+”。
如何使用 Qt 发送“+”符号?
qt - Using setWebhook from Qt for a Telegram bot
Im developing a Telegram bot using Qt c++, and i'm having problems trying to set a Webhook.
SSL Server
First of all, i've created a ssl server using QTcpServer and QSslSocket. Some explanations about this can be found in the QSslSocket doc. Also, i generated a self-signed certificate as Telegram doc explains here, using the command:
The result is a pair of files, a private.key file and a public.pem file. So, i used them in the QSslSockets to secure the connection.
The result of that is a ssl server capable of listen and accept connections. When i use a browser to connect to my ssl server, i obtain a warning about using a self-signed certificate (which i think is normal), but can connect to the server. From the server, i'm able of read the data that browser sent. So, i think the server side is good.
Request for setWebhook
In order to perform a request for setWebhook API method, i use QHttpMultipart class to create a MIME Multipart request. The API method needs the Url to be contacted and the public certificate. So, i use this code to generate the url parameter:
And this code to generate the certificate parameter:
I receive a correct response, with the message that "the webhook was set". But, when Telegram connects to my ssl server, the ssl handshake doesn't finish in a right way (neither encrypted() nor sslError() signals are emitted). I think that the problem is the way i upload the public certificate. As you can see, for the file QHttpPart, i doesn't set the content-type header because i don't know what value to use. I don't know if this can be the problem. I use "text/plain" for url, but don't know what to use for the certificate file.
So, i don't know what could be my problem. Even, i'm not sure if it could be the file upload or not. Using a self signed certificate is not a problem, since the documentation indicates this as a valid way. Any help would be appreciated.
Thanks in advance.
c++ - QNetworkAccessManager 不起作用
我有以下代码:
我想向谷歌服务器发送查询并获得响应,但是当我发送请求时,上述插槽都没有调用,那我做错了什么?如果我把那个地址放在我的浏览器中,我会得到一些数据。
c++ - 如何在 Qt 中更改 QNetworkAccessManager 的默认连接超时?
我正在尝试使用QNetworkAccessManager
and访问一些 url QNetworkRequest
。这是我的代码的一部分:
有时建立连接需要很长时间(因为一些网络相关的问题)。
有什么方法可以更改默认连接超时QNetworkAccessManager
?
c++ - Error during multipart upload using Qt
I am trying to upload a file using QNetworkAccessManager, but I always get an error (Error transferring url - server replied: Bad Request). Below is my code
However running this python script, which should do the same thing, works.
c++ - 使用 QNetworkAccessManager->Post() 会导致 SEGV 关闭应用程序
****更新:我注意到我只在 Windows 上得到了段错误,在 Linux 上很好。在 Windows 上,我使用 QT 5.5 和 MinGW32。我还是想知道为什么。
**** 最初的问题:这里没什么棘手的,我创建了一个基本的控制台应用程序。我有一个 QNetworkAccessManager 发送 Post() 请求。当我关闭控制台时,出现了段错误。
请注意,请求已成功发送和接收,我的问题仅与该段错误有关。
如果没有发送 Post() 请求,关闭控制台不会崩溃。堆栈没有太多帮助。
堆
主文件
CNetworkHandleTest.cpp
CNetworkHandleTest.h
qt - QSslSocket:无法调用未解析的函数 SSLv23_client_method
我正在尝试调用 http 和 https 并尝试解析响应。我收到了对 http 调用的响应,但是对于 https 调用,我收到了这个错误
有人可以告诉我如何解决这个错误吗?我具体需要做什么?
我还观察到一种奇怪的行为,当我将 libeay32.dll 和 ssleay32.dll 文件与 .exe 文件一起保存时,我得到了 https 的响应,但没有得到 http 响应。
c++ - 如何使用 QNetworkAuth 将视频上传到 Youtube
用于通过QOAuth2AuthorizationCodeFlow
google 的 oauth2 进行授权。授权成功以及使用GET
请求(例如,从 youtube 频道获取视频列表)。但是同时QNetworkAccessManager
为用户提供了一堆post
方法重载:
QOAuth2AuthorizationCodeFlow
只有:
QHttpMultiPart
使用&附加文件很容易QHttpPart::setBodyDevice()
。但我不确定如何QVariantMap
用于视频/文件上传。
此外,尝试使用:QOAuth2AuthorizationCodeFlow::networkAccessManager()
来访问底层网络管理器,但它提供了 202 响应代码GET
。并且,如果与经过身份验证的 url 一起使用QOAuth2AuthorizationCodeFlow::createAuthenticatedUrl()
,则响应代码为 200,但回复内容为空(readAll() 返回空缓冲区)。也不适用POST
。
使用QT第2天,所以我可能会误解一些概念。感谢您的任何帮助和想法。
qt - Qt - 一些下载的文件有 0 字节
我目前正在努力使用 Qt 应用程序。我正在尝试使用 QNetworkManager、QNetworkRequest 和 QNetworkReply 从 Google Drive 下载一些文件。
首先,我的应用程序在几台计算机上运行良好(4 或 5 人对其进行了测试,没有遇到任何错误)。每个必须下载的文件都被有效下载。(这种方式每次下载大约280个文件,没有问题。)
问题是我的工作团队的成员只有 0 字节的文件。通过 SSL 下载的每个文件都没有任何内容。经典 HTTP 上唯一的一个下载已正确下载。
你见过这个错误吗?
我所有的“下载”代码都来自这个单一的教程。
编辑:经过几次测试,我们发现错误是Error creating SSL context ()
. 因此,我们试图通过在计算机上安装两个所需的库(ssleay32.dll 和 libeay32.dll)来解决它,但它不起作用。你知道它是否需要其他库吗?