Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получение содержимого веб страницы с помощью QNetworkAccessManager
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Fabian
Добрый день!

Есть следующая задача: необходимо по 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
Попробуй QtWebKit, с помощью него можно получить то, что ты хочешь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.