Это возможно.Вам нужно будет использовать 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 , чтобы сделать это встроенным.