QWebPage, получая тип пантомимы - PullRequest
1 голос
/ 06 мая 2011

Мне интересно, как я могу получить MIME-тип текущей страницы, используя QWebPage.Кроме того, если это возможно, я бы хотел сделать это с помощью запроса HEAD, поэтому я знаю, что не нужно загружать всю страницу, если это не правильный тип MIME.Есть идеи?

1 Ответ

2 голосов
/ 06 мая 2011

Это возможно.Вам нужно будет использовать QNetworkAccessManager , QNetworkRequest и QNetworkReply классы.

Вот (непроверенный) пример, но вам нужно начатьполучение MIME-типа страницы с помощью запроса HEAD:

class TestClass: public QObject
{
    Q_OBJECT
public:
    TestClass();
    void run();

public slots:
    void ready(QNetworkReply * response);

protected:
    QNetworkAccessManager * manager;
};


TestClass::TestClass()
{
    manager = new QNetworkAccessManager(this);

    this->connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ready(QNetworkReply*)));
}

void TestClass::run()
{
    QUrl url("http://www.widefido.com/");

    manager->head(QNetworkRequest(url));
}

void TestClass::ready(QNetworkReply * response)
{
    QVariant contentMimeType = response->header(QNetworkRequest::ContentTypeHeader);

    qDebug() << contentMimeType;
}

ПРИМЕЧАНИЕ. Если сервер не отправляет обратно заголовок ContentType, ваш QVariant будет недействительным.Поэтому, прежде чем использовать contentMimeType, убедитесь, что вы проверили, если он действителен в первую очередь.Затем вы можете преобразовать в QString для проверки вашего списка допустимых типов MIME.

ПРИМЕЧАНИЕ. QNetworkRequests являются асинхронными, поэтому вам потребуется реализовать отношение сигнал-слот для получения значения из QNetworkReploy.,Вы также можете посмотреть в QxtSignalWaiter , чтобы сделать это встроенным.

...