Qt HTTP请求同步调用
来源:互联网 发布:网络兼职诈骗案例 编辑:程序博客网 时间:2024/05/19 07:42
在Qt中,进行HTTP就行现在官方提倡使用QNetworkAccessManager,其和QNetworkRequest和QNetworkReply配合使用,来完成,其是只支持异步的操作。最近使用QML做些android的小程序,需要进行HTTPS的操作,开始是使用的JS中的XMLHttpRequest,其不能使用HTTPS,我很郁闷,那只有使用C++来完成,但是又发现只支持异步,但是我希望在进行网络操作时,不要响应客户的响应,给我提示,那么如果是异步,那么请求本身就需要能够标识其操作,我想如果是同步该多好啊。
然后就有了下面的代码
const int TIMEOUT = (30 * 1000);QString Supporter::httpsPostHelp(const QString &url, const QString &data){ QString _result; QNetworkRequest _request; _request.setUrl(QUrl(url)); QSslConfiguration _sslCon = _request.sslConfiguration(); _sslCon.setPeerVerifyMode(QSslSocket::VerifyNone); _request.setSslConfiguration(_sslCon); _request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/x-www-form-urlencoded")); QNetworkReply *_reply = m_NtwkAccManager.post(_request, data.toLatin1()); _reply->ignoreSslErrors(); QTime _t; _t.start(); bool _timeout = false; while (!_reply->isFinished()) { QApplication::processEvents(); if (_t.elapsed() >= TIMEOUT) { _timeout = true; break; } } if (!_timeout && _reply->error() == QNetworkReply::NoError) { _result = _reply->readAll(); } _reply->deleteLater(); return _result;}
开始的时候我没有加 QApplication::processEvents()
导致了事件阻塞在循环这边,那也就拿不到网络返回的数据,其实网络操作还是异步的,我们只是在一个循环中处理时间并等待,这样可以做到同步和程序正常的事件循环。
0 0
- Qt HTTP请求同步调用
- Qt同步方式进行http请求
- qt同步方式进行http请求
- 用QT实现同步调用WebService
- IOS 异步和同步调用http通讯
- IOS 异步和同步调用http通讯
- Qt调用外部exe并同步显示输出
- [转]同步与异步调用http请求 iphone开发
- 同步与异步调用http请求 iphone开…
- 一次完整的HTTP请知识求与响应涉及了哪些?
- QT:Qt多线程同步
- vue中的http请
- QT HTTP
- 请谨慎调用ShowWindow
- 同步调用、异步调用
- QT调用QT Dll
- Qt中的信号和槽之connect----多线程调用全解析(同步/异步)
- Qt中的信号和槽之connect----多线程调用全解析(同步/异步)
- 1.数据挖掘导引
- $.extend()源码注释
- 全光函数
- CSS设计模式之三权分立模式篇
- 字符串移位(C语言实现,面试题目)
- Qt HTTP请求同步调用
- 2015中国数据库技术大会简介
- Hdu 2544 最短路 模板题
- angularJs控制器controller如何通信
- Xcode6.1 empty application创建ViewController的问题
- Codeforces Beta Round #94 (Div. 1 Only)---A.Statues
- ubuntu下安装程序的三种方法(apt,dpkg,make source)
- Python学习之路11——序列
- (福大2015年3月月赛)FZU 2185 树的路径覆盖 (DFS)