找回密码
 立即注册
收起左侧

QNetworkAccessManager怎样同时发起多个请求

3
回复
10872
查看
[复制链接]
累计签到:1497 天
连续签到:1 天
来源: 2015-5-28 15:01:37 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
QNetworkAccessManager怎样同时发起多个请求,我做了个界面,在打开界面时需要同时发起3个或更多的网络请求来加载不同的数据,找了很多网上的教程(包括站长的)都是简单的发起一个请求,求各位讲解下如何发起多个网络请求。

另外,get会把链接里的  %   转换为  %25   ,虽然这次可以用post代替,但是如果遇到只能用get的链接时,这又该怎么办呢
回复

使用道具 举报

尚未签到

2015-5-28 18:04:56 显示全部楼层
第一个问题,直接连续调用get或post函数不就行了,我平时都是这样做的,默认manager能一次性发5个请求。

第二个问题不明白你问的是什么
回复 支持 反对

使用道具 举报

累计签到:410 天
连续签到:1 天
2015-5-28 18:45:02 显示全部楼层
Joey_Chan 发表于 2015-5-28 18:04
第一个问题,直接连续调用get或post函数不就行了,我平时都是这样做的,默认manager能一次性发5个请求。

...

他是想问怎么自动识别  是get还是post???

点评

我把这个类注册进qml里 这是构造函数这个是发起post请求的函数我在qml里调用时,如果只是调用一个request_post(QString _url,QString _data)请求是可以正常正常运行的,但是如果同时调用两个request_post(QString _u  详情 回复 发表于 2015-5-28 20:24
回复 支持 反对

使用道具 举报

累计签到:1497 天
连续签到:1 天
2015-5-28 20:24:43 显示全部楼层
a408815041 发表于 2015-5-28 18:45
他是想问怎么自动识别  是get还是post???

我把这个类注册进qml里
这是构造函数
  1. Http::Http(QObject *parent) :
  2.     QObject(parent)
  3. {
  4.     manager = new QNetworkAccessManager(this);
  5. }
复制代码
这个是发起post请求的函数
  1. void Http::request_post(QString _url,QString _data){
  2.     QByteArray a;
  3.     a.append(_data);
  4.     QNetworkRequest req;
  5.     req.setUrl(_url);
  6.     req.setRawHeader("Content-Type","application/x-www-form-urlencoded");
  7.     req.setRawHeader("Cookie","appver=2.0.2");
  8.     connect(manager, SIGNAL(finished(QNetworkReply *)),
  9.         this,SLOT(playerlists_list_reply(QNetworkReply *)));
  10.     manager->post(req,a);
  11. }
复制代码
我在qml里调用时,如果只是调用一个request_post(QString _url,QString _data)请求是可以正常正常运行的,但是如果同时调用两个request_post(QString _url,QString _data)就无法成功

第二个问题是,发起get请求时,url里的%会被转义为%25(我抓包发现 的),有没有方法避免这种行为
比如这个链接
http://music.163.com/api/song/de ... ;ids=%5B28949444%5D
用get就会返回和变成
http://music.163.com/api/song/de ... =%255B28949444%255D
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了