2011-05-06 95 views
1

我想知道如何使用QWebPage獲取當前頁面的MIME類型。另外,如果可能的話,我希望能夠使用HEAD請求來做到這一點,所以如果它不是正確的MIME類型,我不知道要下載整個頁面。有任何想法嗎?QWebPage,獲取MIME類型

回答

2

這是可能的。您將需要使用QNetworkAccessManager,QNetworkRequestQNetworkReply類。

下面是一個(未經測試)的例子,但應該讓你開始使用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; 
} 

注:如果服務器不發送回一個內容類型標頭,你的QVariant將無效。因此,在使用contentMimeType之前,請確保先檢查它是否有效。然後你可以轉換成一個QString來檢查你的有效MIME類型列表。

注意:QNetworkRequests是異步的,因此您必須實現信號插槽關係才能將值從QNetworkReploy中取出。您也可以在QxtSignalWaiter中查看它是否在線。

+0

編輯了一個更完整的例子。 – jsherer 2011-05-06 17:51:40

+0

感謝您的迴應! – 2011-05-06 19:01:13