在QT中使用同步阻塞式HTTP请求的方法 - sbw Blog

在QT中使用同步阻塞式HTTP请求的方法

来源: 石博文博客 | 浏览: 12710 | 评论: 2 发表时间: 2013-09-21

QT中对HttpRequest的实现是利用了QT的singal-slot实现的异步请求,虽然有时这很有用,比如节约时间,不会使UI卡住等,但有时,我们还是需要阻塞式的同步HTTP请求,因为在这个HTTP请求返回之前是不能继续工作的,比如登录等任务,没有登录成功就不能继续,此时,我们可以利用QEventLoop进行循环,等待HTTP请求的完成.



QEventLoop 用来在QT经常程序中实现延迟,循环等任务. 在QEventLoop创建后,程序就会一直循环在这里.退出QEventLoop循环的方法是调用它的quit()方法.所以,我们的HTTP请求可以改写为下面的形式:


我们为HTTP请求的完成事件创造一个slot,即loop的quit事件,这样,在HTTP请求完成后,loop循环才会结束.这样就达到了同步HTTP请求的目的.


但是,如果遇到网络问题等.HTTP请求超时,这里就会卡很长时间,所以,有必要加一个超时判断:


这样,在HTTP请超过1s时,返回false. 成功时返回true.



QT

  • 声明: 评论属于其发表者所有,不代表本站的观点和立场.
  • chance 回复该留言 时间: 2014-01-16

    作者写的文章真的是用心啊!

已有 1 位网友发表了一针见血的评论,你还等什么?
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml