• 7532阅读
  • 1回复

如何用QHttp实现同步服务 [复制链接]

上一主题 下一主题
离线cityfantom
 

只看楼主 倒序阅读 楼主  发表于: 2009-08-06
当前我需要在PDA程序中通过HTTP协议访问WEB服务端获取数据,但发现QHttp这个提供的机制是异步的,但我们需同步的功能,在获取到服务端的数据后再进行一步的处理,于是我们这样写了程序:

QHttp* http = new QHttp();
connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(onRequestFinished(int, bool)));
http->setHost("...");
....
QBuffer buffer;
m_post_id = http->post(path, data, &buffer);
wait();

// wait()方法的实现
void wait()
{
        m_finished_flag = false; // 这是一个成员变量,标示请求是否完成
        while(!m_finished_flag )
       {
              QApplication::processEvent();
      }
}

// QHttp requestFinished信号槽
void onRequestFinished(int requestID , bool)
{
     if (requestID == m_post_id)
    {
           m_finished_flag  = true;
    }
}

大体是这样完成的,在PC机上这段程序可以完成同步服务,但到PDA就无法实现,在post发出请求后wait()方法就进行死循环了。
[ 此帖被cityfantom在2009-08-07 09:22重新编辑 ]
离线cityfantom

只看该作者 1楼 发表于: 2009-08-11
唉,这么长时间就没有个人知道如何解决么?
快速回复
限100 字节
 
上一个 下一个