0

後で解析するために からデータを取得する必要がありますが、返されるQNetworkReplyたびにwhen use .data0qDebug() << 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 に答える