crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Получение содержимого веб страницы с помощью QNetworkAccessManager
Fabian
  опции профиля:
сообщение 21.9.2015, 14:29
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 21.9.2015
Пользователь №: 4452

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день!

Есть следующая задача: необходимо по url получить исходный код веб-страницы.
Пытаюсь реализовать это через QNetworkAccessManager.

NetworkAccessManager::NetworkAccessManager()
{
    m_manager = new QNetworkAccessManager(this);

    connect(m_manager, SIGNAL(finished(QNetworkReply*)),
            this, SLOT(replyFinished(QNetworkReply*)));
}

void NetworkAccessManager::getUrl(const QUrl &url)
{
    QNetworkRequest request;
    request.setUrl(url);
    m_manager->get(request);
}

void NetworkAccessManager::replyFinished(QNetworkReply *pReply)
{
    QUrl redirect = pReply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); // проверка на редирект
    if(redirect.isValid() && pReply->url() != redirect)
    {
        if(redirect.isRelative())
            redirect = pReply->url().resolved(redirect);
        getUrl(redirect);
        pReply->deleteLater();
        return;
    }

    QByteArray data=pReply->readAll();
    QString str(data);
    pReply->deleteLater();
}


В итоге получаю такое:

<html><head></head> 
    <body>
        <script>
            var xmlhttp = new XMLHttpRequest();
            function eraseCookieFromAllPaths(name) { var pathBits = location.pathname.split("/");var pathCurrent = " path=";document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for (var i = 0; i < pathBits.length; i++) {pathCurrent += ((pathCurrent.substr(-1) != "/") ? "/" : "") + pathBits[i];
            document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT;" + pathCurrent + ";";}}
            eraseCookieFromAllPaths("BHC");
            xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var a=xmlhttp.getResponseHeader("X-BH-Token");document.cookie="BHC="+a+"; path=/";document.location.href="/index.php"; } };
            xmlhttp.open("GET", "/banhammer/pid", true);xmlhttp.send();
        </script>
    </body></html>


Насколько я понял, приходит веб-страница со скриптом, после выполнения оного и получится полноценная страница.
Вопрос как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 22.9.2015, 9:10
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Попробуй QtWebKit, с помощью него можно получить то, что ты хочешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 2:53