当前位置:编程学习 > wap >>

关于QNetworkAccessManager,QReply使用readall()后,读出为0时,程序自动死亡

各位大大,你们好,我的代码如下:
在构造函数里面,发出一个get的申请,然后在槽里面就是读出数据的大小,然后deletelater,重新发出get。很简单。但是问题是,如果没定义test以后,就是产生一个QNetworkRequest(QUrl("http://www.baidu.com"),一切都很正常,可以循环很多次。
但是定义了test以后,程序没跑几次,就报告reply->readall->count的值为0了,然后程序出现错误,整个程序崩溃了。弄得我也崩溃了。一直觉得QT很好用,但是就几行代码就弄崩了,觉得QT很不靠谱,希望各位大大能够提供一下解决的方案,不想以后因为担心QT的可靠性而不想在上面编程,这实在是太可惜了。跪求
ps:
如果QNetworkRequest(QUrl("http://www.baidu.com"),reply->readall->count的数目为1W+
而是另外一个的话,数目就是26W加,是上面的26倍,因此我在猜想可能是哪里弄爆了,但是由于实力问题,不知道怎么修改,希望各位大大能给出很具体的思路,给小弟一些曙光。不胜感激。

部分代码:
//构造函数里面
manager = new QNetworkAccessManager(this);  //新建QNetworkAccessManager对象
connect(manager,SIGNAL(finished(QNetworkReply*)),  //关联信号和槽
                this,SLOT(replyFinished(QNetworkReply*)));
#ifndef test
    manager->get(QNetworkRequest(QUrl("http://www.baidu.com"))); //发送请求,然后定义函数:
#else
    manager->get(QNetworkRequest(QUrl("http://tieba.baidu.com/f?ie=utf-8&kw=%E5%87%A1%E4%BA%BA%E4%BF%AE%E4%BB%99%E4%BC%A0"))); //发送请求,然后定义函数:
#endif

void Widget::replyFinished(QNetworkReply *reply)  //当回复结束后
 {
    qDebug() << "replyFinished" << reply->readAll().count();
    reply->deleteLater();   //最后要释放reply对象
#ifndef test
    manager->get(QNetworkRequest(QUrl("http://www.baidu.com"))); //发送请求,然后定义函数:
#else
    manager->get(QNetworkRequest(QUrl("http://tieba.baidu.com/f?ie=utf-8&kw=%E5%87%A1%E4%BA%BA%E4%BF%AE%E4%BB%99%E4%BC%A0"))); //发送请求,然后定义函数:
#endif
} 异步
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,