QT HTTP接收多个数据包生成图片

本文介绍了在QT中如何处理HTTP请求分多次返回大型数据,如图片的情况。利用QNetworkAccessManager的readyRead信号读取数据并写入文件,当QNetworkReply::finished信号触发时,表明数据接收完成,可以关闭文件流并进行后续处理。
摘要由CSDN通过智能技术生成

看了看电脑右上角的时间,2017就要彻底流逝了。再瞅了瞅本月的文章数,天啦,只有一篇,近一个月没有时间学习,没有时间写文章,没有时间休息,总之就是没时间……好强烈的罪恶感,赶紧抓住最后的几个小时,补上一文!
我们知道简单的HTTP请求可以一次返回结果,但对于一些数据量较大的情况,则要分多次返回。
QNetworkAccessManager下的QNetworkReply有readyRead信号,一旦该信号产生,就可以读取相应的数据并写入文件中。
对于较大的文件,比如图片,一个http请求需要分多个数据包返回结果最后才能得到完整的集合。
好在有QNetworkReply::finished。该信号提示我们不会再有数据更新了,此时就可以关闭文件流,结束数据存储。

如下:

    request = new QNetworkRequest ();

    manager = new QNetworkAccessManager(this);

    request->setUrl(QUrl("https://static.baydn.com/static/img/icon_head.png"));

    reply = manager->get(*request);

    connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));

    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),

          this, SLOT(slotError(QNetworkReply::NetworkError)));

    // SSL(Secure Sockets Layer 安全套接层), it encrypts data.

    connect(reply, SIGNAL(sslErrors(QList<QSslError>)),

            this, SLOT(slotSslErrors(QList<QSslError>)));

    connect(reply, SIGNAL(finished()), this, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值