QWebPage を使用して現在のページの MIME タイプを取得する方法を知りたいです。また、可能であれば、HEAD リクエストを使用してこれを実行できるようにしたいので、正しい MIME タイプでない場合はページ全体をダウンロードしないでください。何か案は?
1040 次
1 に答える
2
可能です。QNetworkAccessManager、QNetworkRequest、および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 に答える