从QNetworkReply中获取数据以供使用

时间:2012-06-06 10:09:16

标签: qt

我需要从QNetworkReply获取一些数据以便稍后解析,但每次使用data时返回的0qDebug() << 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;

};

1 个答案:

答案 0 :(得分:1)

如果你这样做:

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

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