Russian Qt Forum
Май 23, 2024, 07:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не корректная загрузка кода страницы  (Прочитано 2661 раз)
L.E.O.
Гость
« : Май 02, 2011, 10:36 »

Добрый день.
Помоги мне решить проблему. Она заключается в следующем: загружается не тот код страницы. Использую 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 не хочет корректно работать. Что я делаю не верно?
Записан
L.E.O.
Гость
« Ответ #1 : Май 03, 2011, 20:38 »

Проблему решил с помощью библиотеки libcurl. Но мне все же интересно, как эту проблему решить с помощью Qt.
Записан
Amigo_sa
Гость
« Ответ #2 : Май 03, 2011, 21:19 »

Скорее всего, некорректно распозналась ваш урл.
Код:
QString search = "http://www.leoslyrics.com/listlyrics.php?hid=Pcrppju8n%2Bs%3D";
Попробуйте сформировать его с помощью метода
Цитировать
void QUrl::addEncodedQueryItem ( const QByteArray & key, const QByteArray & value )
Записан
Etud
Гость
« Ответ #3 : Май 04, 2011, 11:10 »

Просто Url раскодируется.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.039 секунд. Запросов: 17.