[Interest] Curious QNetworkAccessManager behavior.

Jason H jhihn at gmx.com
Fri Nov 1 01:21:39 CET 2019


I'm uploading files with QNAM.
QFile *file = new QFile(QString("%1/%2/%3").arg(_dataDir).arg(SERVER_SYNC_DIR).arg(filename));
if (file->open(QIODevice::ReadOnly)) {
QNetworkRequest req(QUrl(QString("%1/%2/%3").arg(_serverUrl.toString()).arg("post").arg(filename)));
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
QNetworkReply *reply = _nam.post(req, file);
_uploads[reply] = file;
connect(&_nam, &QNetworkAccessManager::finished, this, &ServerSyncFolder::handlePostFinished);


void ServerSyncFolder::handlePostFinished(QNetworkReply *reply) {
	qDebug() << Q_FUNC_INFO << reply->url() << reply->errorString();
	if (_uploads.contains(reply)) {
		_uploads[reply]->close();
		_uploads[reply]->remove();
		_uploads[reply]->deleteLater();
		_uploads.remove(reply);

	}
	reply->deleteLater();
}
Every time I upload a file, the handlePostFinished gets calle once for each file I've uploaded. For example, upload files 1.jpg, 2.jpg, 3.jpg, 4.jpg:

void ServerSyncFolder::handleDirectoryChanged(const QString &) "/var/mobile/Containers/Data/Application/8787E7C7-0940-4834-B6D5-1DF049AE4BEE/Documents/sync"
// will now post my file, after post is complete I get:
void ServerSyncFolder::handlePostFinished(QNetworkReply *) QUrl("http://10.12.0.37:57201/post/4.jpg") "Unknown error"
void ServerSyncFolder::handlePostFinished(QNetworkReply *) QUrl("http://10.12.0.37:57201/post/4.jpg") "Unknown error"
void ServerSyncFolder::handlePostFinished(QNetworkReply *) QUrl("http://10.12.0.37:57201/post/4.jpg") "Unknown error"
void ServerSyncFolder::handlePostFinished(QNetworkReply *) QUrl("http://10.12.0.37:57201/post/4.jpg") "Unknown error"

Server logs do not show that I am posting it repeatedly. It is calling my slot with the last URL it posted to, for as many files as I've uploaded so far.

Anyone have an idea why?


More information about the Interest mailing list