2013-10-29 31 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,所以這就是導致問題的原因,因爲我不知道我應該只使用一個應用程序。