QTE下通过Http协议以同步方式与Web服务器通信的实现
来源:互联网 发布:数据挖掘要学什么 编辑:程序博客网 时间:2024/06/06 14:02
最近我使用QTE开发PDA程序,在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()方法就进行死循环了。
经过一段时间的研究,我们发现在QTE下,推荐使用QNetworkAccessManager这个类,并且QTE下还提供了QEventLoop这个类用来使程序进入到主程序框架中的事件循环中,这样我们就不用自已写While语名来等待网络通信的完成信号了,于我们将原来上面的程序段改为一下的程序段:
QNetworkAccessManager* net_manager = new QNetworkAccessManager(parent);
QEventLoop el;
QTimer timer;
timer.setSingleShot(true);
connect(net_manager, SIGNAL(finished(QNetworkReply*)), &el, SLOT(quit()));
connect(&timer, SIGNAL(timeout()), &el, SLOT(quit())); // 超时也退出事件循环
QUrl url("http://YouWebServer:port/path...");
QNetworkRequest request(url);
net_manager->post(request, data);
el.exec();
if (timer.isActive())
{
// 到这里说明请求完成了
}
else
{
// 到这里说明等待超时了
}
- QTE下通过Http协议以同步方式与Web服务器通信的实现
- PB9.0 通过http协议以POST方式将XML发送到协议服务器
- HTTP协议(下):HTTP协议实现通信
- web服务器与http协议
- android通过ksoap协议与服务器发布的webservice通信
- HTTP协议:web应用的通信与控制
- Android使用http协议与服务器通信
- Android使用http协议与服务器通信
- Android使用http协议与服务器通信
- Android使用http协议与服务器通信
- angular通过$http与服务器通信
- android操作通过http与服务器通信
- 客户端通过http协议以多参数方式连接服务端
- Java____HTTP协议详解(web client通过http与service通信)
- 利用socket自己实现基于HTTP协议的Web服务器
- 利用http协议实现一个简单的web服务器
- 基于HTTP协议实现的小型web服务器
- IOS 通过GET方式与服务器通信
- Spring的transactionAttributes
- 下班前的趣闻
- 在windows下jBoss的安装
- 对于默认参数为空的设计技巧
- Spring配置中transactionAttributes的意义
- QTE下通过Http协议以同步方式与Web服务器通信的实现
- 最近写的一些文章--关于控件和文件传输
- 详解spring事务属性
- Windows Mobile 开发系列文章收藏 - GPRS/上网设置
- 工作效率和薪水加倍的7个秘诀
- 总结一些常用功能源码
- 明代诗人柯艾铎诗中的“增益可”和“使泰龙”
- 传智播客Spring视频教程学习笔记15
- COM组件设计与应用(八)实现多接口以及更新接口