Добрый день.
Помоги мне решить проблему. Она заключается в следующем: загружается не тот код страницы. Использую QNetworkAccessManager и его метод get. В чем может быть ошибка? Вот код программы:
class APNetworks : public QObject
{
Q_OBJECT
signals:
void finishedReplyHtml(const QString &html);
private slots:
void finishedReply();
public:
APNetworks(QObject *parent);
void sendRequest(const QUrl &url);
private:
QNetworkAccessManager *m_nam;
QNetworkReply *m_reply;
};
APNetworks::APNetworks(QObject *parent) :
QObject(parent)
{
m_nam = new QNetworkAccessManager(this);
m_reply = 0;
}
void APNetworks::sendRequest(const QUrl &url)
{
m_reply = m_nam->get(QNetworkRequest(QUrl(url)));
connect(m_reply, SIGNAL(finished()), this, SLOT(finishedReply()));
}
void APNetworks::finishedReply()
{
QString html;
QVariant redirectionTarget = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (m_reply->error())
{
}
else if (!redirectionTarget.isNull())
{
QUrl newUrl = redirectionTarget.toUrl();
m_reply->deleteLater();
sendRequest(newUrl);
return;
}
else
{
html = m_reply->readAll();
}
m_reply->deleteLater();
m_reply = 0;
emit finishedReplyHtml(html);
}
И сам запрос на страницу:
...
APNetworks *m_networks;
...
{
...
QString search = "http://www.leoslyrics.com/listlyrics.php?hid=Pcrppju8n%2Bs%3D";
disconnect(m_networks, SIGNAL(finishedReplyHtml(QString)), 0, 0);
m_networks->sendRequest(QUrl(search));
connect(m_networks, SIGNAL(finishedReplyHtml(QString)), this, SLOT(connectSearchFinished(QString)));
}
void APLyrics::connectSearchFinished(const QString &html)
{
...
}
Должна грузиться вот эта страница (как видно из части кода):
http://www.leoslyrics.com/listlyrics.php?hid=Pcrppju8n%2Bs%3D. Но грузится вот эта страница:
http://www.leoslyrics.com/listlyrics.php?hid=Pcrppju8n+s=. Через браузер работает все ок. Даже через браузер из demo qt. Но через QNetworkAccessManager не хочет корректно работать. Что я делаю не верно?