2013-10-29 27 views
0

我试图实现一个简单的下载程序。但我被困住了,因为我的回复和头是空的。QNetworkReply为空

#include <QtGui/QGuiApplication> 
#include "qtquick2applicationviewer.h" 
#include <QNetworkRequest> 
#include <QNetworkAccessManager> 
#include <QNetworkReply> 
#include <QtDebug> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QtQuick2ApplicationViewer viewer; 
    viewer.setMainQmlFile(QStringLiteral("qml/reply/main.qml")); 
    viewer.showExpanded(); 

    QUrl url("http://www.speedtest.qsc.de/10MB.qsc"); 
    QNetworkRequest request(url); 
    request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); 
    QByteArray range; 
    range = "bytes=" + QByteArray::number(0) + "-"; 
    request.setRawHeader("Range", range); 
    QNetworkAccessManager accessManager; 
    QNetworkReply* reply = accessManager.get(request); 
    qDebug() << __FILE__ << ":" << __LINE__ << reply->size(); 
    QList<QByteArray> headerFields = reply->rawHeaderList(); 
    qDebug() << __FILE__ << ":" << __LINE__ << headerFields.count(); 
    for(qint64 i = 0; 0 < headerFields.count(); i++) { 
     QString string(headerFields.at(i)); 
     qDebug() << __FILE__ << ":" << __LINE__ << string; 
    } 

    return app.exec(); 
} 

我该做什么,以便我的回复不再是空的? 在此先感谢!

+0

您需要等待回复。 [看到这个问题](http://stackoverflow.com/questions/5486090/qnetworkreply-wait-for-finished) – PeterT

+0

我加了 QEventLoop循环; connect(reply,SIGNAL(finished()),&loop,SLOT(quit())); loop.exec(); 低于 QNetworkReply * reply = accessManager.get(request); ,我得到错误: 使用未声明的标识符'connect'。 这个错误是什么意思? – Testerrrr

+1

人们假设你通常在QT类中做这个。只需使用'QObject :: connect'而不是'connect' – PeterT

回答

0

我用了多个QNetworkAccessManager,所以这就是导致问题的原因,因为我不知道我应该只使用一个应用程序。