diff --git a/examples/corelib/serialization/rsslisting/rsslisting.cpp b/examples/corelib/serialization/rsslisting/rsslisting.cpp index 40ff07863af..8a82991775e 100644 --- a/examples/corelib/serialization/rsslisting/rsslisting.cpp +++ b/examples/corelib/serialization/rsslisting/rsslisting.cpp @@ -69,15 +69,17 @@ RSSListing::RSSListing(const QString &url, QWidget *parent) */ void RSSListing::get(const QUrl &url) { - QNetworkRequest request(url); if (currentReply) { currentReply->disconnect(this); currentReply->deleteLater(); } - currentReply = manager.get(request); - connect(currentReply, &QNetworkReply::readyRead, this, &RSSListing::readyRead); - connect(currentReply, &QNetworkReply::metaDataChanged, this, &RSSListing::metaDataChanged); - connect(currentReply, &QNetworkReply::errorOccurred, this, &RSSListing::error); + currentReply = url.isValid() ? manager.get(QNetworkRequest(url)) : nullptr; + if (currentReply) { + connect(currentReply, &QNetworkReply::readyRead, this, &RSSListing::readyRead); + connect(currentReply, &QNetworkReply::metaDataChanged, this, &RSSListing::metaDataChanged); + connect(currentReply, &QNetworkReply::errorOccurred, this, &RSSListing::error); + } + xml.setDevice(currentReply); // Equivalent to clear() if currentReply is null. } /* @@ -100,10 +102,7 @@ void RSSListing::fetch() fetchButton->setEnabled(false); treeWidget->clear(); - xml.clear(); - - QUrl url(lineEdit->text()); - get(url); + get(QUrl(lineEdit->text())); } void RSSListing::metaDataChanged() @@ -124,11 +123,8 @@ void RSSListing::metaDataChanged() void RSSListing::readyRead() { int statusCode = currentReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - if (statusCode >= 200 && statusCode < 300) { - QByteArray data = currentReply->readAll(); - xml.addData(data); + if (statusCode >= 200 && statusCode < 300) parseXml(); - } } /*