Russian Qt Forum

Qt => Работа с сетью => Тема начата: alexlogvinenkoit от Февраль 12, 2012, 11:25



Название: Получения HTML кода страницы
Отправлено: alexlogvinenkoit от Февраль 12, 2012, 11:25
Здравствуйте!

Подскажите, пожалуйста, как средствами Qt можно получить HTML код начальной страницы в интернете просто по доменному имени, не указывая index.html или index.htm? Видел метод QHttp::get(...), но не разобрался, если это вообще то, что мне нужно...

Спасибо!


Название: Re: Получения HTML кода страницы
Отправлено: mutineer от Февраль 12, 2012, 11:58
Нет, это не то. Тебе нужен QNetworkAccessManager


Название: Re: Получения HTML кода страницы
Отправлено: thechicho от Февраль 12, 2012, 12:46
http://pastebin.com/DMY55qv0


Название: Re: Получения HTML кода страницы
Отправлено: alexlogvinenkoit от Февраль 12, 2012, 16:31
Код:

#include <QApplication>
#include <QDebug>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QIODevice>
#include <QUrl>

class MyClass : public QObject{

    Q_OBJECT

public slots:
    void onFinished() {
        QIODevice * content = static_cast<QIODevice*>(QObject::sender());
        qDebug() << content->readAll();
        content->deleteLater();
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QNetworkAccessManager nam;
    MyClass obj;

    QNetworkReply * reply = nam.get(QNetworkRequest(QUrl("http://google.com")));
    QObject::connect(reply, SIGNAL(finished()), &obj, SLOT(onFinished()));

    app.exec();
}


Вот такую вещь нашел, перелопатил под себя и все заработало :)
Просто для себя не в debug вывожу, а сохраняю в QByteArray и уже с ним по-своему работаю...
Всем спасибо, проблему решил!!! :):):)


Название: Re: Получения HTML кода страницы
Отправлено: mutineer от Февраль 12, 2012, 19:33
Подключись к QNetworkAccessManager::finished (QNetworkReply * reply) и избавишься от каста в слоте


Название: Re: Получения HTML кода страницы
Отправлено: thechicho от Февраль 12, 2012, 22:28
void onFinished() {
        QIODevice * content = static_cast<QIODevice*>(QObject::sender());
        qDebug() << content->readAll();
        content->deleteLater();
}

программист-извращенец это писал :D