看了看电脑右上角的时间,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,