Qt 5 C++ HTTP POST issues
Qt 5 C++ HTTP POST issues
我一直在尝试使用c++和Qt的HTTP POST请求,经过非常多的研究,这是唯一的方法,我可以得到程序甚至编译。95%的示例有大量错误,并且需要不再存在的库。问题是,当我使用这段代码,它的"回复"等于null…是否有更好的方法来做一个HTTP POST请求,我做错了什么?
QEventLoop eventLoop;
QUrl myURL(QString("http://example.com/"));
QNetworkRequest request(myURL);
QNetworkAccessManager mgr;
QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
QUrlQuery qu;
qu.addQueryItem("unm", aUser);
qu.addQueryItem("pwd", aPass);
QUrl params;
params.setQuery(qu);
QNetworkReply *reply = mgr.post(request, params.toEncoded());
qDebug() << "Success" <<reply->readAll();
必须在读取回复之前执行事件循环。Qt文档说
QNetworkAccessManager
有一个异步API
所以你必须等到回复完成。这就是使用QEventLoop
的目的。需要阻塞调用线程,直到QNetworkAccessManager
释放finished(QNetworkReply*)
。代码中的一切都很好,除了不执行QEventLoop
。在发送请求后放置eventLoop.exec()
。
QUrl myURL(QString("http://example.com"));
QNetworkRequest request(myURL);
QNetworkAccessManager mgr;
QUrlQuery qu;
qu.addQueryItem("unm", aUser);
qu.addQueryItem("pwd", aPass);
QUrl params;
params.setQuery(qu);
QNetworkReply *reply = mgr.post(request, params.toEncoded());
QEventLoop eventLoop;
QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
eventLoop.exec();
qDebug() << "Success" <<reply->readAll();
相关文章:
- 如何使用curlpp通过POST方法上传文件和json数据
- 使用libcurl提交批量url的正确BING Api POST url是什么
- Issues with Win32 ReadProcessMemory API
- 命名空间 pqxx 无法识别 - 将 libpqxx 添加到 Windows 上的 Visual Studio Post
- 如何使用boost/beast从HTTP POST请求中解析和提取有效负载?
- 如何使用 curl 将 POST 请求从 python 重写为 C++
- 从简单的 POST 请求中解析异常
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- 使用 cpp-httplib 的 POST 请求
- Zooming Issues with glutMouseWheelFunc
- POST Arduino 传感器值通过 Flask API 发送到本地 Sqlite db
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- C++中的 cURL POST 请求
- C++ Schannel POST 400 错误代码错误请求
- c++curl返回413请求实体过大,但是post大小远小于max大小
- HTTP POST 请求不允许我定义上下文类型
- 如何在c++中使用libcurl发送POST请求并接收它
- cpp libcurl 在 HTTP post 调用中发送 zip 文件,而不使用 multipart\form-da
- 使用 http post 在 FCM 中推送通知
- Qt 5 C++ HTTP POST issues