2011-05-06 6 views
1

QWebPage를 사용하여 현재 페이지의 MIME 형식을 가져올 수 있는지 궁금합니다. 또한 올바른 mime 형식이 아닌 경우 전체 페이지를 다운로드하지 않는 것을 알고 있으므로 가능하면 HEAD 요청을 사용하여이 작업을 수행 할 수있게하려고합니다. 어떤 아이디어?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; 
} 

참고 : 서버가의 ContentType 헤더를 다시 보내지 않으면, QVariant가 유효하지 않습니다. 따라서 contentMimeType을 사용하기 전에 먼저 유효한지 확인하십시오. 그런 다음 유효한 MIME 유형 목록을 확인하기 위해 QString으로 변환 할 수 있습니다.

참고 : QNetworkRequests는 비동기식이므로 QNetworkReploy에서 값을 가져 오기 위해 신호 슬롯 관계를 구현해야합니다. QxtSignalWaiter에서 인라인으로 작업 할 수도 있습니다.

+0

더 자세한 예를 보려면 편집하십시오. – jsherer

+0

응답 해 주셔서 감사합니다! –

관련 문제