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 回答