首页 > 代码库 > Qt实现同步(阻塞式)http get等网络访问操作
Qt实现同步(阻塞式)http get等网络访问操作
Qt的网络操作类是异步(非阻塞的),但有时想做一些阻塞的事情就不方便了,可用如下几行代码轻松实现:
1 QByteArray MyNetworkAccess::get(const QString &strUrl) 2 { 3 assert(!strUrl.isEmpty()); 4 5 const QUrl url = QUrl::fromUserInput(strUrl); 6 assert(url.isValid()); 7 8 QNetworkRequest qnr(url); 9 QNetworkReply* reply = m_qnam.get(qnr); //m_qnam是QNetworkAccessManager对象 10 11 QEventLoop eventLoop; 12 connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit); 13 eventLoop.exec(QEventLoop::ExcludeUserInputEvents); 14 15 return reply->readAll(); 16 }
当然如上方式不支持重定向(301等),因为暂时用不上,如果要支持,还要在return前判断并循环或递归。
另外如果出现error,现在的方式会把服务器返回的错误信息直接返回,后面再更新一版,支持判断错误的,敬请期待!
并且可以看出本来是封装了一个网络操作类,但现在只有get,post等还没做,等弄好了也一起放上来!
Qt实现同步(阻塞式)http get等网络访问操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。