我需要从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;
};
答案 0 :(得分:1)
如果你这样做:
//...some code
some->go("some string", "your url");
qDebug() << some->getData();
//..some code
问题在于异步。当您调用getData时,服务器没有立即回复。 您必须等待处理请求并在之后调用此方法。 你必须使用信号和插槽