PyObject *PythonQtDecorator::retrieve(QNetworkAccessManager *self, QString url) { //qDebug("QNAM %p retrieve %s", self, qPrintable(url)); QNetworkRequest request; request.setUrl(QUrl(url)); request.setRawHeader("Connection", "keep-alive"); QNetworkReply *reply = syncGet(self, request); if (reply->error() != QNetworkReply::NoError) { qWarning("Network Error: %s", qPrintable(reply->errorString())); QByteArray reason = reply->errorString().toUtf8(); char *creason = (char*)malloc(reason.size() + 1); strcpy(creason, reason.constData()); PyErr_SetString(PyExc_IOError, creason); reply->deleteLater(); return NULL; } // Reply #if 0 qDebug("Reply: %s %i", qPrintable(reply->url().toString()), reply->isFinished()); foreach(QNetworkReply::RawHeaderPair header, reply->rawHeaderPairs()) qDebug("HDR: %s: %s", qPrintable(header.first), qPrintable(header.second)); #endif QByteArray barr = reply->readAll(); reply->deleteLater(); return toBytes(&barr); }
void NetworkAccess::syncMetaDataChanged() { QUrl redirection = networkReply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); if (redirection.isValid()) { qDebug() << "Redirect" << redirection; networkReply->deleteLater(); syncGet(redirection); /* QNetworkAccessManager *manager = The::networkAccessManager(); networkReply->deleteLater(); networkReply = manager->get(QNetworkRequest(redirection)); connect(networkReply, SIGNAL(metaDataChanged()), this, SLOT(metaDataChanged()), Qt::QueuedConnection); connect(networkReply, SIGNAL(finished()), this, SLOT(finished()), Qt::QueuedConnection); */ } }
QByteArray NetworkAccess::syncGetBytes(QUrl url) { return syncGet(url)->readAll(); }