1

QNetworkReply を QString/QByteArray に保存できるようにしたいと考えています。私が見た例では、常にストリームを別のファイルに保存しています。

現時点で、私のコードは次のようになっています。ホストから文字列を取得し、それを解析して指定されたエラー コードを探すだけです。

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
    }

}

メッセージはかなり小さく、次のようになります。

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

では、どうすればこの小さなストリームをメモリにロードしたり、エラー コードを探すことができるでしょうか?

4

1 に答える 1

3

QNetworkReply は、ストリームである QIODevice から継承します。ストリームから何かを読み取った後、それはもう存在しません。デバッグ行 (// prints out the xml messageコメント付きの行) の後には、もう何も読む必要はありません。

于 2012-03-27T20:42:48.797 に答える