2012-03-27 10 views
1

Ich möchte in der Lage sein, die QNetworkReply zu einem QString/QByteArray zu speichern. In den Beispielen habe ich gesehen, dass sie den Stream immer in einer anderen Datei speichern.Speichern QNetworkReply

Im Moment sieht mein Code in etwa so aus, wo ich eine Zeichenfolge vom Host bekomme und alles, was ich tun möchte, ist es zu analysieren, um nach dem angegebenen Fehlercode zu suchen.

if(_reply->error() == QNetworkReply::UnknownContentError) { 

    qDebug() << _reply->readAll(); // prints out the xml message 

    QString test = QString(_reply->readAll()); 
    qDebug() << test; // "" 

    QByteArray test2 = QByteArray(_reply->readAll()); 
    qDebug() << test2; // "" 

    QRegExp rxlen("(<code>)(.*(?=</code>))"); 
    rxlen.setMinimal(true); 

    int pos = rxlen.indexIn(test); // pos == -1 

    if(pos > -1) { 
     qDebug() << rxlen.cap(2); // never hit 
    } 

} 

Die Botschaft ist ziemlich klein und sieht ungefähr so ​​aus:

<?xml version="1.0" encoding="utf-8"?> 
    <error> 
     <code>string-value</code> 
     <message>string-value</message> 
    </error> 

Wie kann ich diesen kleinen Strom in den Speicher laden, oder schauen Sie nur für den Fehlercode?

Antwort

3

QNetworkReply erbt von QIODevice, das ein Stream ist. Nachdem du etwas aus einem Stream gelesen hast, ist es nicht mehr da. Nach Ihrer Debug-Zeile (eine mit // prints out the xml message Kommentar) gibt es nichts mehr zu lesen.

+0

Sie waren so schnell, dass ich sogar Ihre Antwort noch nicht akzeptieren kann :) – chikuba

+0

Genauer gesagt, es ist ein sequentieller Zugriff 'QIODevice', der zu dem" einmal-lesen-und-dann-es-ist-weg "Verhalten führt . Sie können mehr in der detaillierten Beschreibung von [QNetworkReply] (http://qt-project.org/doc/qt-5/qnetworkreply.html) lesen. –

Verwandte Themen