0

我需要从中获取一些数据QNetworkReply以便稍后解析,但每次返回data都是0在使用qDebug() << getData().

我不想将它保存在文件中,那么如何从QNetworkReply插槽中获取数据并将其存储在字符串中?

请帮忙!非常感谢。

#include <QByteArray>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>

class Fetch : public QObject

{

    Q_OBJECT

public:

      Fetch(){};
      void go(const QString &str, QUrl &url)
      {
          QNetworkRequest request;
          request.setUrl(url);

          QByteArray data = str.toUtf8();

          QNetworkAccessManager* manager = new QNetworkAccessManager(this);
          reply = manager->post(request, data);

          connect(reply, SIGNAL(finished()), SLOT(httpFinished()));
      }

      QString getData()
      {
          return QString::fromUtf8(m_data);
      }

private slots:

      void httpFinished()
      {
          m_data = reply->readAll();
      }


private:

      QByteArray m_data;
      QNetworkReply* reply;

};
4

1 回答 1

1

如果你做这样的事情:

//...some code
some->go("some string", "your url");
qDebug() << some->getData();
//..some code

问题是异步的。当您调用 getData 时,服务器没有立即回复。您必须等待处理请求并在之后调用此方法。你必须使用信号和插槽

于 2012-06-06T10:28:36.337 回答