发送请求:
QNetworkRequest request(url);
if (m_ReqQueue.isEmpty()) {
m_NetAccessManager.get(request);
}
m_ReqQueue.append(request);
m_ReqQueue是一个队列,没有实际意义。
接收数据在回调中:
QFile tmpFile(tmpFilePath);
tmpFile.open(QIODevice::WriteOnly);
QDataStream ds(&tmpFile);
QByteArray bytes = reply->readAll();
ds.writeRawData(bytes,bytes.length());
tmpFile.close();
emit fileReady(tmpFilePath);
clearCache();
if (!m_ReqQueue.isEmpty()) {
m_ReqQueue.removeFirst();
if (!m_ReqQueue.isEmpty()) {
QNetworkRequest request = m_ReqQueue.first();
m_NetAccessManager.get(request);
}
}
要说的是:必须用QDataStream::writeRawData,这个用来写裸数据。writeBytes是不行的,它会在裸数据前写一个长度标记。
参考博客:http://blog.163.com/qimo601@126/blog/static/15822093201321104959456/