1

QWebPage を使用して現在のページの MIME タイプを取得する方法を知りたいです。また、可能であれば、HEAD リクエストを使用してこれを実行できるようにしたいので、正しい MIME タイプでない場合はページ全体をダウンロードしないでください。何か案は?

4

1 に答える 1

2

可能です。QNetworkAccessManagerQNetworkRequest、およびQNetworkReplyクラスを使用する必要があります。

これは (テストされていない) 例ですが、HEAD リクエストを使用してページの MIME タイプを取得することから始める必要があります。

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 を使用する前に、まずそれが有効かどうかを確認してください。次に、有効な MIME タイプのリストと照合するために QString に変換できます。

注: QNetworkRequests は非同期であるため、QNetworkReploy から値を取得するには、シグナルとスロットの関係を実装する必要があります。インラインで実行するためにQxtSignalWaiterを参照することもできます。

于 2011-05-06T17:22:54.207 に答える